使用python手打代码编写基于原始代码的TF-IDF[全局词频]获得权重。 要求:输入为已分词后的评论信息的csv文件(无需再分词),输出结果为排序后的词语及TF-IDF值,且无重复词语同时出现,输出形式为csv文档;标注详细清晰;以注释形式描述所使用的公式
时间: 2024-03-15 08:45:01 浏览: 66
基于Python实现TF-IDF矩阵表示(人工智能实验)【100011921】
好的,我可以为您提供一份手写Python代码实现TF-IDF算法的示例代码,具体操作如下:
```python
import pandas as pd
import numpy as np
from math import log
# 读取已分词后的评论信息的csv文件
df = pd.read_csv('comments.csv')
# 构建词频矩阵
word_count = {}
for i in range(len(df)):
words = df.iloc[i]['comment'].split()
for word in words:
if word not in word_count:
word_count[word] = 1
else:
word_count[word] += 1
# 计算TF值
tf = {}
for word in word_count:
tf[word] = word_count[word] / sum(word_count.values())
# 计算IDF值
N = len(df)
idf = {}
for word in word_count:
dfi = sum([1 for i in range(len(df)) if word in df.iloc[i]['comment']])
idf[word] = log(N / (dfi + 1))
# 计算TF-IDF值
tf_idf = {}
for word in word_count:
tf_idf[word] = tf[word] * idf[word]
# 将TF-IDF值排序
word_weights = sorted(tf_idf.items(), key=lambda x: x[1], reverse=True)
# 将结果保存为csv文件
result = pd.DataFrame(word_weights, columns=['word', 'tf-idf'])
result.drop_duplicates(subset=['word'], inplace=True)
result.to_csv('tfidf.csv', index=False)
```
在TF-IDF算法中,TF(Term Frequency)表示某个词在一篇文档中出现的频率,IDF(Inverse Document Frequency)表示该词在整个文档集合中出现的频率。TF-IDF值的计算公式为:
TF-IDF = TF * IDF
其中,TF = 该词在文档中出现的次数 / 文档中所有词的总数
IDF = log(文档集合中文档的总数 / (包含该词的文档数 + 1))
在上述代码中,我们首先读取已分词后的评论信息的csv文件,并统计每个词出现的次数,计算TF值和IDF值,最后计算TF-IDF值并进行排序,将结果保存为csv文件。同时,我们对重复出现的词语只保留了TF-IDF值最大的一项,以避免结果中出现重复词语。
阅读全文