我尝试使用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以及提供哪些输入?
答案 0 :(得分:0)
如果可以,请使用最新版本的spacy。法国lemmatizer在2.1中得到了很大的改进。
如果必须使用2.0,请考虑使用另一种这样的词条成形器:https://spacy.io/universe/project/spacy-lefff