0
我正在使用NLTK - 一個特定的工具包來操作語料庫文本,並且我定義了一個函數來交叉用戶輸入和莎士比亞的話。Python NLTK ::相交的單詞和句子
def shakespeareOutput(userInput):
user = userInput.split()
user = random.sample(set(user), 3)
#here is NLTK's method
play = gutenberg.sents('shakespeare-hamlet.txt')
#all lowercase
hamlet = map(lambda sublist: map(str.lower, sublist), play)
print hamlet
回報:
[ ['[', 'the', 'tragedie', 'of', 'hamlet', 'by', 'william', 'shakespeare', '1599', ']'],
['actus', 'primus', '.'],
['scoena', 'prima', '.'],
['enter', 'barnardo', 'and', 'francisco', 'two', 'centinels', '.'],
['barnardo', '.'],
['who', "'", 's', 'there', '?']...['finis', '.'],
['the', 'tragedie', 'of', 'hamlet', ',', 'prince', 'of', 'denmarke', '.']]
我想找到它包含了大部分出現用戶字的句子,並返回了一句。我想:
bestCount = 0
for sent in hamlet:
currentCount = len(set(user).intersection(sent))
if currentCount > bestCount:
bestCount = currentCount
answer = ' '.join(sent)
return ''.join(answer).lower(), bestCount
調用該函數:
shakespeareOutput("The Actus Primus")
回報:
['The', 'Actus', 'Primus']
None
我究竟做錯了什麼?
在此先感謝。
我認爲'return'語句應該不在for循環中。否則,該函數將返回'hamlet'列表中的第一個'sent'項目。 – Rahul