文本词频同意问题分析

一、文本词频同意问题分析

1.1 问题分析

文本词频统计

  • 需求:一篇文章,出现了哪些词?哪些词出现得最多?
  • 该怎么做呢?

英文文本 --> 中文文本

  • 英文文本:Hamet 分析词频

  • 中文文本:《三国演义》 分析人物

二、 Hamlet英文词频统计实例讲解

042-实例10-文本词频统计-01.jpg?x-oss-process=style/watermark

  • 文本去噪及归一化
  • 使用字典表达词频
f = open(r"E:python实训python预科班day06hamlet.txt", "r", encoding="utf-8")
# 读取文件
data = f.read().lower()
# 通过" "切割单词
data_split = data.split(" ")

# 统计数据
count_data = {}

# 统计单词出现的次数
for word in data_split:

    # 判断词是否再字典中
    if word in count_data:
        count_data[word] += 1
    else:
        count_data[word] = 1

# item获取键值对(一个一个元组存放0),将所有键值对通过元组存放
data_items = count_data.items()
# 将元组转换成list
list_item = list(data_items)


def func(i):
    """排序"""
    return i[1]


# 降序
list_item.sort(key=func, reverse=True)
# 出现最多的前十个单词
res_data = list_item[:10]

for word in res_data:
    print(f"{word[0]: ^7} {word[1]: ^5}")

f.close()

结果:

the 791
and 596
of 527
to 508
a 376
my 375
in 320
you 314
i 291
his 235

  • 运行结果由大到小排序
  • 观察单词出现次数

三、《三国演义》人物出场统计实例讲解

042-实例10-文本词频统计-02.jpg?x-oss-process=style/watermark

  • 中文文本分词
  • 使用字典表达词频
  • 中文文本分词
  • 使用字典表达词频
  • 扩展程序解决问题
  • 根据结果进一步优化
import jieba

"""
@author RansySun
@create 2019-07-19-11:08
"""

f = open(r"E:python实训python预科班day06	hreekingdoms.txt", encoding="utf8")
data = f.read()
# 切割中文
data_jieba = jieba.lcut(data)

count_dic = {}

for word in data_jieba:

    # 去除长度为一的逗号,句号(无意义词)等
    if len(word) == 1:
        continue

    # 去除不是人物词
    if word in {"将军", "却说", "荆州", "二人", "不可", "今日", "不能", "不敢", "丞相", "今日", "关公", "天下", "东吴", "于是", "如此", "次日", "大喜", "商议"}:
        continue

    
    if "曰" in word:
        word = word[:-1]
    if word in count_dic:
        count_dic[word] += 1
    else:
        count_dic[word] = 1

def func(i):
    return i[1]

data_list = list(count_dic.items())
data_list.sort(key=func, reverse=True)

data_res = data_list[:10]
print(data_res)
for data in data_res:
    print(f"{data[0]: ^5} {data[1]: ^7}")

结果:
孔明 1226
玄德 975
曹操 953
张飞 358
吕布 300
赵云 278
刘备 277
云长 265
孙权 264
魏兵 233

四、文本词频统计举一反三

4.1 应用问题的扩展

  • 《红楼梦》、《西游记》、《水浒传》…
  • 政府工作报告、科研论文、新闻报道 …
  • 进一步呢? 未来还有词云…
在当下的阶段,必将由程序员来主导,甚至比以往更甚。
原文地址:https://www.cnblogs.com/randysun/p/11213445.html