python根据频次评分
时间: 2023-10-17 16:19:45 浏览: 37
如果你有一个单词列表和它们出现的频次,你可以根据频次评分。一种常见的方法是使用TF-IDF(Term Frequency-Inverse Document Frequency)算法。该算法考虑到一个单词在文本中的频率以及该单词在整个语料库中的出现频率。具体来说,它将单词的频率除以文本中单词总数,并乘以log(语料库中文本总数/包含该单词的文本总数)。
以下是一个示例代码:
```python
import math
def tf_idf(word_freq, corpus):
scores = {}
N = len(corpus)
for word, freq in word_freq.items():
tf = freq / sum(word_freq.values())
idf = math.log(N / len([doc for doc in corpus if word in doc]))
scores[word] = tf * idf
return scores
```
在这个函数中,`word_freq`是一个字典,其中包含单词和它们在文本中的频次;`corpus`是一个包含所有文本的列表。
例如,如果你有以下单词列表和它们在文本中的频次:
```python
word_freq = {'python': 3, 'programming': 2, 'language': 1}
corpus = ['Python is a popular programming language', 'I like to program in Python']
```
你可以使用`tf_idf`函数来计算每个单词的TF-IDF分数:
```python
scores = tf_idf(word_freq, corpus)
print(scores)
```
输出为:
```
{'python': 0.0, 'programming': 0.34657359027997264, 'language': 0.34657359027997264}
```
注意,在这个例子中,`python`的TF-IDF分数为0,因为它在所有文本中都出现了。如果一个单词在所有文本中都出现,那么它的IDF将为0,因此整个分数将为0。