如何用Python实现字符串的分词和统计词频?
一、分词
1.中文分词
在中文中,词语并不是用空格或者其他符号直接隔开的。因此,需要通过中文分词的方法,将一段中文文本分割成一个个独立的单词,供后续统计使用。
Python中,能够实现中文分词处理的常见工具有:jieba、hanlp等。
以jieba这个中文分词为例,先在命令行中输入:
pip install jieba
安装好jieba库之后,我们可以开始进行分词操作。
首先,需要将需要分词的文本读取进Python程序中。在这里,我们可以使用Python中提供的open()方法:
with open('text.txt', 'r') as f:
content = f.read()
以上代码块中,将需要分词的文本文件名设置为“text.txt”,然后通过open()方法将文件读取出来,存放在为“content”的字符串变量中。
接下来,调用jieba库中的cut()方法,对“content”字符串进行分词。cut()方法返回一个包含每个词语的列表。
import jieba seg_list = jieba.cut(content, cut_all=False)
可以将cut_all=True来开启全模式,即对文本内容进行完整分词。
2.英文分词
相对于中文,英文单词的分割较为简单,单词之间通常以空格或者标点符号隔开。
Python中,自带的模块re(正则表达式)可以轻松实现英文文本分词。
import re content = "This is a sentence. I like programming." words = re.findall(r'\b\w+\b', content)
以上代码块中,使用re中的findall()方法查找被空格或者符号隔开的单词,存放在“words”变量中。
二、统计词频
了解了如何对文本内容进行分词之后,下一步是对分词后的结果进行词频统计。在Python中,能够方便实现词频统计的方法有:自定义函数、collections库等。
1.自定义函数统计词频
自定义函数的方法相对较为简单。将所有分词后的词语存放在一个列表中,然后通过循环逐个统计每个词语出现的次数,最终得到每个词语以及其出现次数。
def word_count(words):
word_dict = {}
for word in words:
if word in word_dict:
word_dict[word] += 1
else:
word_dict[word] = 1
return word_dict
通过调用该函数,来统计分词后的词语数量和各个词语出现的次数:
result = word_count(words)
2.使用collections库统计词频
Python的collections库中提供了一个Counter类,可以方便地实现词频统计。
from collections import Counter word_counts = Counter(words) print(word_counts)
以上代码块中,使用Counter方法来统计列表中每个元素出现的次数,在输出时会返回一个以词语为 key,出现次数为 value 的字典。
三、总结
通过以上方法,可以方便地利用Python实现文本分词和词频统计。在实际应用中,可以将两个方法结合起来使用,先进行分词处理,再通过词频统计得到分析结果。
