欢迎访问宙启技术站
智能推送

如何用Python实现字符串的分词和统计词频?

发布时间:2023-06-11 12:35:02

一、分词

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实现文本分词和词频统计。在实际应用中,可以将两个方法结合起来使用,先进行分词处理,再通过词频统计得到分析结果。