如何使用spaCy

时间:2019-07-12 13:59:23

标签: python nlp spacy lemmatization ner

我尝试使用spaCy 2.0.12和法语模型fr_core_news_sm对文本进行词法化。 Morevoer,我想用任意字符序列替换人名,并使用token.ent_type_ == 'PER'检测这些人的名字。示例结果将是“ Pierre aime les chiens”->“〜PER〜aimer chien”。

问题是我找不到同时做这两种方法的方法。我只有这两个部分选项:

  • 我可以使用原始文本doc = nlp(text)向管道提供数据。然后,NER将识别大多数人的名字,但是以大写字母开头的单词的词缀将是不正确的。例如,简单问题“ Pouvons-nous faireça?”的引理。将会是['Pouvons', '-', 'se', 'faire', 'ça', '?'],其中“ Pouvons”仍然是变形的形式。
  • 我可以使用小写的文本doc = nlp(text.lower())来填充管道。然后,我之前的示例将正确显示['pouvoir', '-', 'se', 'faire', 'ça', '?'],但是NER不会将大多数人的名字识别为实体,因为我猜起始资本是找到实体的有用指示。

我的想法是执行标准流水线(tagger,解析器,NER),然后执行小写,然后仅在最后进行定格。

但是,词元化似乎没有自己的管道组件,文档也没有说明如何执行和在何处执行。 This的答案似乎暗示着词法化的执行独立于任何流水线组件,并且可能在它的不同阶段进行。

所以我的问题是:如何选择何时进行lemmatization以及提供哪些输入?

1 个答案:

答案 0 :(得分:0)

如果可以,请使用最新版本的spacy。法国lemmatizer在2.1中得到了很大的改进。

如果必须使用2.0,请考虑使用另一种这样的词条成形器:https://spacy.io/universe/project/spacy-lefff