1
由於我們拿到的這款代碼課業的一部分:Python的 - 正則表達式關係抽取
>>> IN = re.compile(r'.*\bin\b(?!\b.+ing)')
>>> for doc in nltk.corpus.ieer.parsed_docs('NYT_19980315'):
... for rel in nltk.sem.extract_rels('ORG', 'LOC', doc,
... corpus='ieer', pattern = IN):
... print(nltk.sem.rtuple(rel))
我們被要求嘗試一下我們自己的一些句子,看輸出,所以爲了這個,我決定定義一個函數:
def extract(sentence):
import re
import nltk
IN = re.compile(r'.*\bin\b(?!\b.+ing)')
for rel in nltk.sem.extract_rels('ORG', 'LOC', sentence, corpus='ieer', pattern = IN):
print(nltk.sem.rtuple(rel))
當我嘗試運行此代碼:
>>> from extract import extract
>>> extract("The Whitehouse in Washington")
我得到gollowing錯誤:
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
extract("The Whitehouse in Washington")
File "C:/Python34/My Scripts\extract.py", line 6, in extract
for rel in nltk.sem.extract_rels('ORG', 'LOC', sentence, corpus='ieer', pattern = IN):
File "C:\Python34\lib\site-packages\nltk\sem\relextract.py", line 216, in extract_rels
pairs = tree2semi_rel(doc.text) + tree2semi_rel(doc.headline)
AttributeError: 'str' object has no attribute 'text'
任何人都可以幫助我瞭解我的功能錯誤嗎? 的測試句子的正確的輸出應該是:
[ORG: 'Whitehouse'] 'in' [LOC: 'Washington']
'nltk.corpus.ieer.parsed_docs('NYT_19980315')'返回什麼?它應該是['nltk.corpus.reader.ieer.parsed_docs()'](http://www.nltk.org/api/nltk.corpus.reader.html#nltk.corpus.reader.ieer.IEERCorpusReader .parsed_docs)?它看起來(基於你的代碼)就像它返回一個包含'text'屬性的對象列表,而你只是使用字符串。你可以創建這些對象(不管它們是什麼)? – KSFT 2015-04-04 18:07:42
@KSFT >>> c = nltk.corpus.ieer.parsed_docs('NYT_19980315') >>> c [1] returns =除此之外,我和你一樣知道這就是我們所得到的全部 –
hjalpmig
2015-04-04 18:27:29
nltk.corpus.ieer.parsed_docs('NYT_19980315'):'line'中的'extract'函數錯過了'doc。這可能是問題嗎? – 2015-04-04 18:54:15