0
编辑:错误固定Defaultdict()正确的选择?
的想法是从文件中读取文本,清洁,以及对连续单词(不permuations):
file = f.read()
words = [word.strip(string.punctuation).lower() for word in file.split()]
pairs = [(words[i]+" " + words[i+1]).split() for i in range(len(words)-1)]
然后,对于每一对,创建一个列表所有可能的个人单词可以在整个文本中跟随该对。字典看起来像
[ConsecWordPair]:[listOfFollowers]
因此,引用给定对的字典将返回可以跟随该对的所有单词。例如。
wordsThatFollow[('she', 'was')]
>> ['alone', 'happy', 'not']
我的算法来实现这涉及到一个defaultdict(名单) ...
wordsThatFollow = defaultdict(list)
for i in range(len(words)-1):
try:
# pairs overlap, want second word of next pair
# wordsThatFollow[tuple(pairs[i])] = pairs[i+1][1]
EDIT: wordsThatFollow[tuple(pairs[i])].update(pairs[i+1][1][0]
except Exception:
pass
我不那么担心值错误我有规避“尝试 - 除了'(除非我应该)。问题是,该算法只有成功返回追随者之一:
wordsThatFollow[('she', 'was')]
>> ['not']
很抱歉,如果这个职位是坏的社会,我盘算的事情了,因为我去^^
你想改变'wordsThatFollow [元组(对[1])] =对第[i + 1] [1]' to words wordsThatFollow [tuple(pairs [i])] .append(pairs [i + 1] [1])< - - 你想添加到列表中,这是该对的值,而不是在每次迭代时重新定义它的值 – inspectorG4dget