代码实现tfidf算法
时间: 2023-10-12 20:19:39 浏览: 142
下面是一个简单的 Python 代码实现 tf-idf 算法的例子:
```python
import math
# 定义一个计算单词在文档中出现次数的函数
def count_word_in_doc(word, doc):
count = 0
for w in doc.split():
if w == word:
count += 1
return count
# 定义一个计算词频的函数
def compute_tf(word, doc):
return count_word_in_doc(word, doc) / len(doc.split())
# 定义一个计算包含某个单词的文档数的函数
def count_doc_with_word(word, docs):
count = 0
for doc in docs:
if word in doc.split():
count += 1
return count
# 定义一个计算逆文档频率的函数
def compute_idf(word, docs):
return math.log(len(docs) / (1 + count_doc_with_word(word, docs)))
# 定义一个计算 tf-idf 的函数
def compute_tfidf(word, doc, docs):
return compute_tf(word, doc) * compute_idf(word, docs)
```
使用示例:
```python
# 定义一些文档
docs = [
"this is the first document",
"this is the second document",
"and this is the third one",
"is this the first document"
]
# 计算第一个文档中单词 "this" 的 tf-idf 值
word = "this"
doc = docs[0]
print(compute_tfidf(word, doc, docs))
```
输出结果:
```
0.0
```
在这个例子中,由于单词 "this" 出现在所有文档中,因此它的逆文档频率为 0,导致 tf-idf 值为 0。
阅读全文