我试图通过与关键字列表的协议来订购一些简短的段落。这用于向用户提供按兴趣排序的文本。
假设我已经拥有关键字列表,希望能够反映用户的兴趣。我认为这是一个相当标准的程序,并期望一些python包。但到目前为止,我的谷歌搜索并不是很成功。
我自己可以很容易地提出一个强力解决方案,但我想知道是否有人知道这样做的有效方法?
编辑: 好的,这是一个例子: keywords = [' cats',' food',' Miau']
text1 = 'This is text about dogs'
text2 = 'This is text about food'
text3 = 'This is text about cat food'
我需要一个导致命令text3,text2,text1的过程 谢谢
答案 0 :(得分:2)
这是我能想到的最简单的事情:
import string
input = open('document.txt', 'r')
text = input.read()
table = string.maketrans("","")
text = text.translate(table, string.punctuation)
wordlist = text.split()
agreement_cnt = 0
for word in list_of_keywords:
agreement_cnt += wordlist.count(word)
从此处获取删除标点位:Best way to strip punctuation from a string in Python。
答案 1 :(得分:0)
这样的事情可能是一个很好的起点:
>>> keywords = ['cats', 'food', 'Miau']
>>> text1 = 'This is a text about food fed to cats'
>>> matched_word_count = len(set(text1.split()).intersection(set(keywords)))
>>> print matched_word_count
2
如果你想纠正大小写或捕获单词形式(即“猫”而不是“猫”),那么显然需要考虑更多。
采用上述方法并捕获不同字符串列表的匹配计数,然后对结果进行排序以找到最佳"匹配,应该比较简单。