簡體   English   中英

在nltk python中從同一句子中提取兩個名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM