如何使用 spaCy 对真实大小写进行 NER,然后对小写进行词形还原
How to perform NER on true case, then lemmatization on lower case, with spaCy
我尝试使用带有法语模型的 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 识别为实体,因为我猜起始资本是查找实体的有用指标。
我的想法是执行标准管道(标记器、解析器、NER),然后小写,然后仅在最后进行词形还原。
但是,词形还原似乎没有自己的管道组件,文档也没有解释它是如何以及在何处执行的。 This 答案似乎暗示词形还原是独立于任何管道组件执行的,并且可能在它的不同阶段执行。
所以我的问题是:如何选择何时执行词形还原以及为其提供哪个输入?
如果可以,请改用最新版本的 spacy。法语词形还原器在 2.1 中得到了很大改进。
如果您必须使用 2.0,请考虑使用像这样的备用词形还原器:https://spacy.io/universe/project/spacy-lefff
我尝试使用带有法语模型的 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 识别为实体,因为我猜起始资本是查找实体的有用指标。
我的想法是执行标准管道(标记器、解析器、NER),然后小写,然后仅在最后进行词形还原。
但是,词形还原似乎没有自己的管道组件,文档也没有解释它是如何以及在何处执行的。 This 答案似乎暗示词形还原是独立于任何管道组件执行的,并且可能在它的不同阶段执行。
所以我的问题是:如何选择何时执行词形还原以及为其提供哪个输入?
如果可以,请改用最新版本的 spacy。法语词形还原器在 2.1 中得到了很大改进。
如果您必须使用 2.0,请考虑使用像这样的备用词形还原器:https://spacy.io/universe/project/spacy-lefff