使用Go语言实现一个简单的词频分析系统

作者:

文章目录
  • 从文本文件中读取内容。 对文本进行分词(简单处理空格、标点)。 统计每个单词的出现次数。 输出词频最高的前 N 个词。
  • 文件读取:使用 os 和 bufio 处理文件输入。 字符串处理:用 strings 包清洗数据。 map 统计:用哈希表存储词频。 排序:对统计结果排序,输出高频词。
  • package main import ( “bufio” “fmt” “os” “regexp” “sort” “strings” ) // 词频结果结构体 type WordCount struct { Word string Count int } // 统计词频函数 func countWordFrequency(text string) map[string]int { // 正则去掉标点符号,只保留字母和空格 reg := regexp.MustCompile(`[^a-zA-Zs]+`) cleanText := reg.ReplaceAllString(text, “”) // 全部转小写,避免大小写重复 cleanText = strings.ToLower(cleanText) // 按空格分割单词 words := strings.Fields(cleanText) // 使用 map 统计词频 wordFreq := make(map[string]int) for _, word := range words { wordFreq[word]++ } return wordFreq } func main() { // 打开文件 file, err := os.Open(“sample.txt”) if err != nil { fmt.Println(“打开文件失败:”, err) return } defer file.Close() // 逐行读取文件 var content strings.Builder scanner := bufio.NewScanner(file) for scanner.Scan() { content.WriteString(scanner.Text()) content.WriteString(” “) } // 统计词频 wordFreq := countWordFrequency(content.String()) // 转换为切片,方便排序 var wcList []WordCount for word, count := range wordFreq { wcList = append(wcList, WordCount{word, count}) } // 按词频排序(降序) sort.Slice(wcList, func(i, j int) bool { return wcList[i].Count > wcList[j].Count }) // 输出前10个高频词 fmt.Println(“词频最高的前10个单词:”) for i, wc := range wcList { if i >= 10 { break } fmt.Printf(“%s: %dn”, wc.Word, wc.Count) } }
  • 假设 sample.txt 内容如下: Go is an open source programming language. Go makes it easy to build simple, reliable, and efficient software. 运行结果: 词频最高的前10个单词:go: 2is: 1an: 1open: 1source: 1programming: 1language: 1makes: 1it: 1easy: 1
  • 支持中文分词:结合 gojieba 库进行中文文本的分词统计。 命令行工具:支持用户通过命令行输入文件路径和输出前 N 个结果。 Web API 接口:将词频统计结果以 JSON 格式返回,便于前端展示。 可视化:将结果导出到 CSV,再用 ECharts 或 Excel 绘制词云图。
  • 本文实现了一个基础的 词频分析系统,涵盖了文件读取、字符串清洗、词频统计和排序等常见技能点。在实战项目中,你可以进一步扩展为 Web 服务、支持多语言、甚至接入大数据处理框架。 到此这篇关于使用Go语言实现一个简单的词频分析系统的文章就介绍到这了,更多相关Go词频分析内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 基于Python制作一个词频统计工具的完整指南 Python实现PDF提取文字并统计词频 使用Java实现MapReduce词频统计示例代码 Python统计中文词频的四种方法小结 利用python实现词频统计分析的代码示例 Python中Jieba进行词频统计与关键词提取 Python词频统计的两种方法详解
  • 目录
    • 一、项目目标
    • 二、核心技术点
    • 三、代码实现
    • 四、运行效果
    • 五、功能扩展
    • 六、总结

    在数据分析和文本挖掘中,词频统计(Word Frequency Analysis) 是最基础也是最常用的技术之一。无论是做搜索引擎、舆情分析,还是文章关键词提取,词频分析都扮演着重要角色。本文将带你用 Go 语言实现一个简易的 词频分析系统,支持读取文件并统计词频,最终输出结果。

    从文本文件中读取内容。

    对文本进行分词(简单处理空格、标点)。

    统计每个单词的出现次数。

    输出词频最高的前 N 个词。

    文件读取:使用 osbufio 处理文件输入。

    字符串处理:用 strings 包清洗数据。

    map 统计:用哈希表存储词频。

    排序:对统计结果排序,输出高频词。

    package main
    
    import (
    	"bufio"
    	"fmt"
    	"os"
    	"regexp"
    	"sort"
    	"strings"
    )
    
    // 词频结果结构体
    type WordCount struct {
    	Word  string
    	Count int
    }
    
    // 统计词频函数
    func countWordFrequency(text string) map[string]int {
    	// 正则去掉标点符号,只保留字母和空格
    	reg := regexp.MustCompile(`[^a-zA-Zs]+`)
    	cleanText := reg.ReplaceAllString(text, "")
    
    	// 全部转小写,避免大小写重复
    	cleanText = strings.ToLower(cleanText)
    
    	// 按空格分割单词
    	words := strings.Fields(cleanText)
    
    	// 使用 map 统计词频
    	wordFreq := make(map[string]int)
    	for _, word := range words {
    		wordFreq[word]++
    	}
    	return wordFreq
    }
    
    func main() {
    	// 打开文件
    	file, err := os.Open("sample.txt")
    	if err != nil {
    		fmt.Println("打开文件失败:", err)
    		return
    	}
    	defer file.Close()
    
    	// 逐行读取文件
    	var content strings.Builder
    	scanner := bufio.NewScanner(file)
    	for scanner.Scan() {
    		content.WriteString(scanner.Text())
    		content.WriteString(" ")
    	}
    
    	// 统计词频
    	wordFreq := countWordFrequency(content.String())
    
    	// 转换为切片,方便排序
    	var wcList []WordCount
    	for word, count := range wordFreq {
    		wcList = append(wcList, WordCount{word, count})
    	}
    
    	// 按词频排序(降序)
    	sort.Slice(wcList, func(i, j int) bool {
    		return wcList[i].Count > wcList[j].Count
    	})
    
    	// 输出前10个高频词
    	fmt.Println("词频最高的前10个单词:")
    	for i, wc := range wcList {
    		if i >= 10 {
    			break
    		}
    		fmt.Printf("%s: %dn", wc.Word, wc.Count)
    	}
    }
    

    假设 sample.txt 内容如下:

    Go is an open source programming language.
    Go makes it easy to build simple, reliable, and efficient software.
    

    运行结果:

    词频最高的前10个单词:
    go: 2
    is: 1
    an: 1
    open: 1
    source: 1
    programming: 1
    language: 1
    makes: 1
    it: 1
    easy: 1

    支持中文分词:结合 gojieba 库进行中文文本的分词统计。

    命令行工具:支持用户通过命令行输入文件路径和输出前 N 个结果。

    Web API 接口:将词频统计结果以 JSON 格式返回,便于前端展示。

    可视化:将结果导出到 CSV,再用 ECharts 或 Excel 绘制词云图。

    本文实现了一个基础的 词频分析系统,涵盖了文件读取、字符串清洗、词频统计和排序等常见技能点。在实战项目中,你可以进一步扩展为 Web 服务、支持多语言、甚至接入大数据处理框架。

    到此这篇关于使用Go语言实现一个简单的词频分析系统的文章就介绍到这了,更多相关Go词频分析内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • 基于Python制作一个词频统计工具的完整指南
    • Python实现PDF提取文字并统计词频
    • 使用Java实现MapReduce词频统计示例代码
    • Python统计中文词频的四种方法小结
    • 利用python实现词频统计分析的代码示例
    • Python中Jieba进行词频统计与关键词提取
    • Python词频统计的两种方法详解

    站内搜索