📜  计算词频python(1)

📅  最后修改于: 2023-12-03 15:41:41.811000             🧑  作者: Mango

介绍

当我们需要分析一段文本时,计算词频是常见需求。Python 作为一门强大的编程语言,提供了丰富的库支持,让我们能够轻松地实现计算词频的功能。在本篇文章中,我们将介绍如何使用 Python 实现计算词频的功能。

计算词频流程

计算词频主要分为以下几步:

1.读取文件:使用 Python 的文件操作函数读取文本文件。

2.分词:将文本按照一定的规则进行拆分为单独的词语。Python 提供了多种分词器,例如 jieba、NLTK 等。

3.去除停用词:在计算词频时,一些常见的无意义词汇如“的”“是”“了”等没有意义的辅助词汇不应该纳入统计范围内。所以需要去除停用词。

4.计算词频:统计每个单词出现的频率,得到单词频率字典。

5.排序:根据单词的频率排序。

示例代码

import jieba
from collections import Counter

def count_word_frequency(file_path: str, stopwords: list = None, top_k: int = 10) -> str:
    """
    计算文件中的词频
    :param file_path: 文件路径
    :param stopwords: 停用词列表
    :param top_k: 返回的词频排名前 k 的单词
    :return: 返回计算出的词频结果(markdown格式)
    """
    # 读取文件
    with open(file_path, encoding='utf-8') as f:
        text = f.read()

    # 分词,并去除停用词
    words = jieba.lcut(text)
    if stopwords:
        words = [word for word in words if word not in stopwords]

    # 计算词频
    word_count = Counter(words)
    top_words = word_count.most_common(top_k)

    # 输出结果(markdown 格式)
    result = '| 词语 | 词频 |\n| ---- | ---- |\n'
    for word, frequency in top_words:
        result += f'| {word} | {frequency} |\n'

    return result

示例结果

下面是一个简单的示例应用,假设我们计算的文件路径为 /path/to/file.txt,停用词列表为空,需要返回前 10 名的词频结果。

result = count_word_frequency('/path/to/file.txt', top_k=10)

print(result)

执行以上代码将会返回如下结果(markdown格式):

| 词语 | 词频 | | ---- | ---- | | 的 | 44 | | 在 | 11 | | 了 | 7 | | 是 | 5 | | 这 | 5 | | 也 | 5 | | 有 | 4 | | 需要 | 4 | | 一个 | 4 | | 可以 | 4 |

小结

计算词频在 Python 中是很常见的需求,我们可以使用第三方库如 jieba 来拆分词语并过滤停用词,使用 collections.Counter 统计每个单词出现的频率并排序,最后返回一个表示统计结果的 markdown 格式字符串。以上代码只是一种示例实现,实际使用时有更多优秀的实现方式,具体可根据实际需求和情况选择最适合自己的处理方法。