Parse Location, Person name, Date from string by NLTK
我有很多像下面这样的弦,
我正在使用NLTK删除日期行部分并识别日期、位置和人名?
使用POS标记,我可以找到语音部分。但我需要确定地点、日期和人名。我该怎么做?
更新:
注意:我不想执行另一个HTTP请求。我需要用我自己的代码来解析它。如果有图书馆,可以使用它。
更新:
我用的是
1 2 3 4 5 6 7 8 9 10 11 12 | import nltk def pchunk(t): w_tokens = nltk.word_tokenize(t) pt = nltk.pos_tag(w_tokens) ne = nltk.ne_chunk(pt) print ne # txts is a list of those 3 sentences. for t in txts: print t pchunk(t) |
输出如下,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | ISLAMABAD: Chief Justice Iftikhar Muhammad Chaudhry said that National Accountab (S ISLAMABAD/NNP :/: Chief/NNP Justice/NNP (PERSON Iftikhar/NNP Muhammad/NNP Chaudhry/NNP) said/VBD that/IN (ORGANIZATION National/NNP Accountab/NNP)) KARACHI, July 24 -- Police claimed to have arrested several suspects in separate (S (GPE KARACHI/NNP) ,/, July/NNP 24/CD --/: Police/NNP claimed/VBD to/TO have/VB arrested/VBN several/JJ suspects/NNS in/IN separate/JJ) ALUM KULAM, Sri Lanka -- As gray-bellied clouds started to blot out the scorchin (S (GPE ALUM/NN) (ORGANIZATION KULAM/NN) ,/, (PERSON Sri/NNP Lanka/NNP) --/: As/IN gray-bellied/JJ clouds/NNS started/VBN to/TO blot/VB out/RP the/DT scorchin/NN) |
号
仔细检查。即使卡拉奇也很受欢迎,但斯里兰卡是公认的人,伊斯兰堡是公认的NNP而不是GPE。
雅虎有一个Placefinder API,可以帮助识别位置。看起来这些地方总是在最开始的地方,所以在达到极限之前,把前两个词放到API中是值得的:
http://developer.yahoo.com/boss/geo/
为了识别大写字母,使用令人恐惧的regex也值得一看:用于检查是否在字符串中连续找到大写字母的正则表达式?
祝你好运!
如果使用API和您自己的代码可以满足您的需求,那么WIT API可以很容易地为您做到这一点。
。
WIT还将把日期/时间标记解析为规范化日期。
要开始,你只需要提供几个例子。