Spacy 中是否有二元语法或三元语法特征?

新手上路,请多包涵

下面的代码将句子分成单独的标记,输出如下

 "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)

我最理想的是一起阅读“云计算”,因为它在技术上是一个词。

基本上我正在寻找一个双克。 Spacy 中是否有允许 Bi gram 或 Tri grams 的功能?

原文由 venkatttaknev 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 644
2 个回答

Spacy 允许检测名词块。因此,要将您的名词短语解析为单个实体,请执行以下操作:

  1. 检测名词块 https://spacy.io/usage/linguistic-features#noun-chunks

  2. 合并名词块

  3. 再次进行依赖解析,它现在会将“云计算”解析为单个实体。

 >>> 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')]

原文由 DhruvPathak 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果你有一个 spacy doc ,你可以将它传递给 textacy

 ngrams = list(textacy.extract.basics.ngrams(doc, 2, min_freq=2))

原文由 Suzana 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进