我创建了一本字典,用来将各种单词转化为其基本形式。
dictionary = {'sunny': 'sun', 'banking': 'bank'}
def stemmingWords(sentence, dictionary):
for word in sentence.split():
temp = []
if word in dictionary:
word = dictionary[word]
temp.append(word)
sentence = ' '.join(temp)
return(sentence)
现在,如果打印单独的单词,它似乎可以工作。然而,当我插入整个句子并且我想要该句子的更新版本时,似乎出了问题。例如,如果我这样做:
sentence = "the sun us shining"
new_sentence = stemmingWords(sentence, dictionary)
print(new_sentence)
给我“闪耀”。当我看着“阳光明媚的时候”。
对这里出了什么问题有什么想法吗?
最佳答案
首先,你的字典方向不对,把它倒过来
dictionary = {'sunny': 'sun', 'banking': 'bank'}
避免重新输入的简单方法是:
dictionary = {v:k for k,v in dictionary.items()}
请注意,如果多个单词与同一个单词匹配,则恢复字典将不起作用,您必须首先解决歧义:因此手动:
dictionary = {'sun', 'sunny': , 'sunn' : 'sunny', 'bank': 'banking'}
然后使用列表理解和 get
访问来分割并重建字符串,如果字典中没有,则返回原始值
def stemmingWords(sentence,dictionary):
return " ".join([dictionary.get(w,w) for w in sentence.split()])
print(stemmingWords("the sun is shining",dictionary))
结果:
the sunny is shining
注意使用join
时有意的([])
。在这种情况下,显式传递列表推导式比生成器更快。
关于python - 使用字典替换句子中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41918877/