我是 spacy 和 nlp 的新手。
为了理解 spacy 是如何工作的,我想创建一个函数,它接受一个句子并返回一个字典、元组或列表,其中包含名词和描述它的词。
我知道 spacy 创建了一个句子树,并且知道每个单词的用法(显示为 displacy)。
但正确的方法是什么:
“一个大房间,里面有两个黄色的洗碗机”
到:
{名词:"房间",adj:"大"} {名词:"洗碗机",adj:"黄色",adv:"两个"}
或者任何其他解决方案,在一个可用的包中给我所有相关的词。
提前致谢!
pol*_*m23 10
这是DependencyMatcher的非常简单的使用。
import spacy
from spacy.matcher import DependencyMatcher
nlp = spacy.load("en_core_web_sm")
pattern = [
{
"RIGHT_ID": "target",
"RIGHT_ATTRS": {"POS": "NOUN"}
},
# founded -> subject
{
"LEFT_ID": "target",
"REL_OP": ">",
"RIGHT_ID": "modifier",
"RIGHT_ATTRS": {"DEP": {"IN": ["amod", "nummod"]}}
},
]
matcher = DependencyMatcher(nlp.vocab)
matcher.add("FOUNDED", [pattern])
text = "A large room with two yellow dishwashers in it"
doc = nlp(text)
for match_id, (target, modifier) in matcher(doc):
print(doc[modifier], doc[target], sep="\t")
Run Code Online (Sandbox Code Playgroud)
输出:
large room
two dishwashers
yellow dishwashers
Run Code Online (Sandbox Code Playgroud)
把它变成字典或者任何你想要的东西应该很容易。您可能还想修改它以将专有名词作为目标,或支持其他类型的依赖关系,但这应该是一个好的开始。
您可能还想查看名词块功能。
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |