Spacy中有二字或三字语法功能吗? [英] Is there a bi gram or tri gram feature in Spacy?
问题描述
下面的代码将句子分解为单独的标记,输出如下所示
The below code breaks the sentence into individual tokens and the output is as below
"cloud" "computing" "is" "benefiting" " major" "manufacturing" "companies"
import en_core_web_sm
nlp = en_core_web_sm.load()
doc = nlp("Cloud computing is benefiting major manufacturing companies")
for token in doc:
print(token.text)
我理想地想要的是一起阅读云计算",因为从技术上讲这是一个词.
What I would ideally want is, to read 'cloud computing' together as it is technically one word.
基本上,我正在寻找一个双字母组. Spacy中是否有任何允许Bi gram或Tri gram的功能?
Basically I am looking for a bi gram. Is there any feature in Spacy that allows Bi gram or Tri grams ?
推荐答案
Spacy允许检测名词块.因此,要将您的名词短语解析为单个实体,请执行以下操作:
Spacy allows detection of noun chunks. So to parse your noun phrases as single entities do this:
/1.检测名词块 https://spacy.io/usage/linguistic-features#noun-chunks
/2.合并名词块 /3.再次进行依赖关系解析,它将现在将云计算"解析为单个实体.
/2. Merge the noun chunks /3. Do dependency parsing again, it would parse "cloud computing" as single entity now.
>>> import spacy
>>> nlp = spacy.load('en')
>>> doc = nlp("Cloud computing is benefiting major manufacturing companies")
>>> list(doc.noun_chunks)
[Cloud computing, major manufacturing companies]
>>> for noun_phrase in list(doc.noun_chunks):
... noun_phrase.merge(noun_phrase.root.tag_, noun_phrase.root.lemma_, noun_phrase.root.ent_type_)
...
Cloud computing
major manufacturing companies
>>> [(token.text,token.pos_) for token in doc]
[('Cloud computing', 'NOUN'), ('is', 'VERB'), ('benefiting', 'VERB'), ('major manufacturing companies', 'NOUN')]
>>>
这篇关于Spacy中有二字或三字语法功能吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!