Python 可以在NLTK正则表达式中混合文字和标记吗

Python 可以在NLTK正则表达式中混合文字和标记吗,python,nltk,Python,Nltk,我正在试用NLTK来帮助我解析一些文本。例如,我有: 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'), ('D

我正在试用NLTK来帮助我解析一些文本。例如,我有:

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'), ('.', '.')]
假设我想提取“所有者”(Gregg S.Smith)的角色,是否有一种方法可以混合和匹配文字和标记,可能是以下格式:

'owned by{<NP>+}'
“由{+}所有”

上一次讨论过这个问题,但我不确定我是否理解提供的答案。这是可能的,如果是,您可以提供一个代码示例。

如果您将每个单词和标记组合起来,然后使用
RegEx
查找特定的PoS标记序列,您就可以得到您要查找的结果

例如,使用您定义的
words
变量

joined = ' '.join([w+"<"+t+">" for w,t in words])

如果您将每个单词和标记组合起来,然后使用
RegEx
查找特定的PoS标记序列,则可以得到您要查找的结果

例如,使用您定义的
words
变量

joined = ' '.join([w+"<"+t+">" for w,t in words])

那么,您应该标记您的初始字符串,并将PoS的字符串表示形式附加到它。然后根据您的token+PoS格式编写规则。您介意举个例子吗?好的,您应该标记初始字符串并将PoS的字符串表示形式附加到它。然后根据您的token+PoS格式编写规则。您介意举个例子吗?非常感谢Nathan,我会查出来的。非常感谢Nathan,我会查出来的。
>>> import re
>>> m = re.match(r'.*owned<VBN> by<IN>.*?<NNP>', joined)
>>> m.group(0)
'1<CD> Robins<NNP> Drive<NNP> owned<VBN> by<IN> Gregg<NNP>'