我正在尝试使用NLTK来帮助我解析一些文本。到目前为止,只使用sent_tokenize函数对组织文本非常有帮助。作为一个例子,我有:
1 Robins Drive owned by Gregg S. Smith was sold to TeStER, LLC of 494 Bridge Avenue, Suite 101-308, Sheltville AZ 02997 for $27,000.00.
使用:
words =pos_tag(word_tokenize(sentence))
我明白了:
[('1', 'CD'), ('Robins', 'NNP'), ('Drive', 'NNP'), ('owned', 'VBN'), ('by', 'IN'), ('Gregg', 'NNP'), ('S.', 'NNP'), ('Smith', 'NNP'), ('was', 'VBD'), ('sold', 'VBN'), ('to', 'TO'), ('TeStER', 'NNP'), (',', ','), ('LLC', 'NNP'), ('of', 'IN'), ('494', 'CD'), ('Bridge', 'NNP'), ('Avenue', 'NNP'), (',', ','), ('Suite', 'NNP'), ('101-308', 'CD'), (',', ','), ('Sheltville', 'NNP'), ('AZ', 'NNP'), ('02997', 'CD'), ('for', 'IN'), ('$', '$'), ('27,000.00', 'CD'), ('.', '.')]
我一直在查看各种教程和书籍http://www.nltk.org/book/,但我不确定在2个令牌之间提取的最佳方法。例如,我想选择"拥有的代币和#34;并且"被卖给"获取所有者名称。我怎样才能最好地使用NLTK函数和python来做到这一点?
答案 0 :(得分:4)
这是在你写的单词之间选择标记的一种解决方案:
import re
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer(r'owned by(.*?)was sold to')
string = '1 Robins Drive owned by Gregg S. Smith was sold to TeStER, LLC of 494 Bridge Avenue, Suite 101-308, Sheltville AZ 02997 for $27,000.00.'
s = tokenizer.tokenize(string)
返回:
[' Gregg S. Smith ']