[英]compute tf-idf with corpus
因此,我复制了一个有关如何创建可以运行tf-idf的系统的源代码,下面是代码:
#module import
from __future__ import division, unicode_literals
import math
import string
import re
import os
from text.blob import TextBlob as tb
#create a new array
words = {}
def tf(word, blob):
return blob.words.count(word) / len(blob.words)
def n_containing(word, bloblist):
return sum(1 for blob in bloblist if word in blob)
def idf(word, bloblist):
return math.log(len(bloblist) / (1 + n_containing(word, bloblist)))
def tfidf(word, blob, bloblist):
return tf(word, blob) * idf(word, bloblist)
regex = re.compile('[%s]' % re.escape(string.punctuation))
f = open('D:/article/sport/a.txt','r')
var = f.read()
var = regex.sub(' ', var)
var = var.lower()
document1 = tb(var)
f = open('D:/article/food/b.txt','r')
var = f.read()
var = var.lower()
document2 = tb(var)
bloblist = [document1, document2]
for i, blob in enumerate(bloblist):
print("Top words in document {}".format(i + 1))
scores = {word: tfidf(word, blob, bloblist) for word in blob.words}
sorted_words = sorted(scores.items(), key=lambda x: x[1], reverse=True)
for word, score in sorted_words[:50]:
print("Word: {}, TF-IDF: {}".format(word, round(score, 5)))
但是,问题是,我想将所有文件放在corpora的sport文件夹中,并将food文件夹中的food文章放入另一个corpora,因此系统将为每个corpora给出结果。 现在,我只能比较文件,但我想在corpora。之间进行比较。很抱歉提出这个问题,我们将提供任何帮助。
谢谢
我得到的是,您想要计算两个文件的词频并将它们存储在不同的文件中以进行比较,为此,您可以使用终端。 这是计算单词频率的简单代码
import string
import collections
import operator
keywords = []
i=0
def removePunctuation(sentence):
sentence = sentence.lower()
new_sentence = ""
for char in sentence:
if char not in string.punctuation:
new_sentence = new_sentence + char
return new_sentence
def wordFrequences(sentence):
global i
wordFreq = {}
split_sentence = new_sentence.split()
for word in split_sentence:
wordFreq[word] = wordFreq.get(word,0) + 1
wordFreq.items()
# od = collections.OrderedDict(sorted(wordFreq.items(),reverse=True))
# print od
sorted_x= sorted(wordFreq.iteritems(), key=operator.itemgetter(1),reverse = True)
print sorted_x
for key, value in sorted_x:
keywords.append(key)
print keywords
f = open('D:/article/sport/a.txt','r')
sentence = f.read()
# sentence = "The first test of the function some some some some"
new_sentence = removePunctuation(sentence)
wordFrequences(new_sentence)
您必须通过更改文本文件的路径来运行此代码两次,并且每次从这样的console pass命令运行代码时
python abovecode.py > destinationfile.txt
就像你的情况一样
python abovecode.py > sportfolder/file1.txt
python abovecode.py > foodfolder/file2.txt
小鬼:如果您想让单词出现频率,请省略该部分
print keywords
小鬼:如果你需要的话。 到他们的频率然后忽略
print sorted_x
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.