[英]Extracting two names from same sentence in nltk python
嗨,我最近開始玩Python,這似乎很容易,所以我在Python的nltk中找到了主體。 當我嘗試
text1.concordance("Moby")
它給了我很多句子,並顯示了包含Moby一詞的句子,很酷。
因此,我嘗試測試是否可以找到所有名稱為Moby和Ahab的句子,但可悲的是我得到了錯誤。
我是在做錯事還是應該能夠得到所有包含這兩個名字的句子? 我應該使用nltk的另一個函數嗎? o
看到atm可能很容易,但對我來說卻不是那么多。希望有人可以提供幫助,謝謝。
PS:如果我需要編寫一些代碼,那么一個例子會很棒。^^
編輯:由於有人要求輸入錯誤,所以我也會寫我寫的代碼。
import nltk
from nltk.book import *
text1.concordance("Moby","Ahab")
給我錯誤:
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
text1.concordance('Moby','Ahab')
File "C:\Programmering\Python27\lib\site-packages\nltk\text.py", line 314, in concordance
self._concordance_index.print_concordance(word, width, lines)
File "C:\Programmering\Python27\lib\site-packages\nltk\text.py", line 174, in print_concordance
half_width = (width - len(word) - 2) / 2
TypeError: unsupported operand type(s) for -: 'str' and 'int'
我猜想我會像跑步一樣得到一些比賽:
text1.concordance("Moby")
我參加了84場比賽。
你不能concordance
做到這一點。 它只接受一個單詞,並打印出結果。 沒有(合理的)方式將它們作為列表獲取,因此您無法進一步過濾它們。 問題是, Text
背后的對象text1
,只適合簡單的互動探索-我從來沒有明白為什么NLTK書啟動。 因此,請忽略Text
,跳過本章的其余部分,直接進入第2章gutenberg
Dick是gutenberg
語料庫的一部分,因此您可以遍歷其句子並獲得如下答案:
from nltk.corpus import gutenberg
for s in gutenberg.sents('melville-moby_dick.txt'):
if 'Ahab' in s and 'Moby' in s:
print " ".join(s)
您可以列出要查找的所有名稱,例如:
name_list = ['Moby', 'Ahab']
這樣做的代碼是:
import nltk
from nltk.book import *
name_list = ['Moby', 'Ahab']
for name in name_list:
text1.concordance(name)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.