使用python的信息检索作业(1)

统计词频

任务:
统计文本文件中的单词出现次数
给定文本文件;需要查询的单词
给出查询结果;生成词典文件

查阅资料后考虑借助python的***nltk***库(需要额外安装)

最基础版:

import nltk
import os

current_path = os.path.abspath(__file__)
path = os.path.abspath(os.path.dirname(current_path) + os.path.sep + ".") # 确认文件路径

name = input('文件名为(不需扩展名):') + '.txt' # 获取用户输入
Q = input('查询单词为:')

with open(path + '\\' + name, 'r') as f: # 打开文件
lst = [] while True: # 读取数据
line = f.readline()
if line == '':
break
else:
res = line.split()
for i in res:
if i[0].isalpha(): # 判断是否为英文单词(避免连字符号导致缺漏)
lst.append(i.lower()) # 将单词小写并存入列表
freq = nltk.FreqDist(lst) # 统计词频
with open('dict.index', 'w') as fp: # 创建INDEX文件
for key, val in freq.items(): # 将数据按格式写入
fp.write(str(key) + '\t' + str(val) + '\n')
if Q in freq.keys(): # 输出词频数据
print(Q + '的词频为:' + str(freq[Q]))
else:
print(Q + '的词频为:' + str(0) + '\t' + '无此单词')

缺点:没有提取词根,例如friends与friend重复

使用到的nltk类:

nltk.FreqDist()

统计列表中字符串的出现次数
接受一个列表
返回一个字典
可以使用循环输出内容

方法 作用
B() 返回词典的长度
tabulate() 生成频率分布的表格形式
hapaxes() 返回只出现过一次的词
most_common(num) 返回出现次数最频繁的几个词与其频度
plot(title,cumulative=False) 绘制频率分布图,若cumu为True,则是累积频率分布图

nltk只用来统计词频了,大材小用。。。
统计词频也可以直接创建字典循环获得

dic = {}
for item in lst:
dic[item] = dic.get(item, 0) + 1


作者:陆离少爷

相关推荐

在这里插入图片描述

手把手教你使用python获取王者荣耀英雄及皮肤高清图片

【python基础】|| python中列表的应用

在这里插入图片描述

Python–virtualenv创建一套“隔离”的Python运行环境

python字典之嵌套