TF-IDF代码
时间: 2023-07-02 09:14:35 浏览: 221
案例TF-IDF.pdf
TF-IDF算法的实现比较简单,下面是一个基于Python的示例代码:
```python
import math
# 计算TF值
def computeTF(wordDict, doc):
tfDict = {}
docWordCount = len(doc)
for word, count in wordDict.items():
tfDict[word] = count / float(docWordCount)
return tfDict
# 计算IDF值
def computeIDF(docList):
idfDict = {}
N = len(docList)
# 统计每个词在多少个文档中出现过
idfDict = dict.fromkeys(docList[0].keys(), 0)
for doc in docList:
for word, count in doc.items():
if count > 0:
idfDict[word] += 1
# 计算IDF值
for word, count in idfDict.items():
idfDict[word] = math.log(N / float(count))
return idfDict
# 计算TF-IDF值
def computeTFIDF(tfDict, idfDict):
tfidfDict = {}
for word, tfValue in tfDict.items():
tfidfDict[word] = tfValue * idfDict[word]
return tfidfDict
# 示例
documentList = ["this is a sentence", "this is another sentence", "this is a third sentence"]
docDictList = []
for doc in documentList:
docDict = dict.fromkeys(set(doc.split()), 0)
for word in doc.split():
docDict[word] += 1
docDictList.append(docDict)
tfDictList = []
idfDict = computeIDF(docDictList)
for docDict in docDictList:
tfDict = computeTF(docDict, docDict.keys())
tfDictList.append(tfDict)
tfidfDictList = []
for i in range(len(tfDictList)):
tfidfDict = computeTFIDF(tfDictList[i], idfDict)
tfidfDictList.append(tfidfDict)
print(tfidfDictList)
```
代码中首先定义了三个函数,分别用于计算TF值、IDF值和TF-IDF值。其中,computeTF函数接受一个词频字典wordDict和一个文本doc作为输入,返回一个TF值字典tfDict;computeIDF函数接受一个文本列表docList作为输入,返回一个IDF值字典idfDict;computeTFIDF函数接受一个TF值字典tfDict和一个IDF值字典idfDict作为输入,返回一个TF-IDF值字典tfidfDict。
在示例代码中,我们定义了一个文本列表documentList,然后将每个文本转换成一个词频字典,并将所有文本的词频字典存储在一个列表docDictList中。接着,我们计算每个文本的TF值,并将所有文本的TF值字典存储在一个列表tfDictList中。最后,我们计算所有文本的IDF值,并将每个文本的TF-IDF值存储在一个列表tfidfDictList中。
输出的结果是一个包含三个TF-IDF值字典的列表,每个字典表示一个文本的TF-IDF值。
阅读全文