首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展NLP实体提取

扩展NLP实体提取
EN

Stack Overflow用户
提问于 2017-06-26 15:44:28
回答 1查看 929关注 0票数 5

我们想从一个简单的搜索社区和街道在不同的城市。我们不仅使用英语,还使用其他各种西里尔语。我们需要能够识别地点的拼写错误。在查看python库时,我发现了以下一个:http://polyglot.readthedocs.io/en/latest/NamedEntityRecognition.html

我们试着玩它,但是找不到扩展实体识别数据库的方法。怎样才能做到呢?

如果没有,是否还有其他建议可以帮助拼写检查和提取与自定义数据库匹配的各种实体的多语言nlp?

EN

回答 1

Stack Overflow用户

发布于 2020-10-30 21:59:46

看看HuggingFace的预先训练过的模型。

  1. 他们有一个多语种的NER模型,训练了40种语言,包括西里尔语(如俄语)。这是一个微调版本的RoBERTa,所以准确性似乎是非常好的。请参阅这里的详细信息:https://huggingface.co/jplu/tf-xlm-r-ner-40-lang
  2. 他们还拥有一个多语言的DistilBERT模型,用于基于GitHub台风语料库的错误检测。语料库似乎包括15种不同语言的排印,包括俄语。请参阅这里的详细信息:https://huggingface.co/mrm8488/distilbert-base-multi-cased-finetuned-typo-detection

下面是对用例略有修改的文档中的一些示例代码:

代码语言:javascript
复制
from transformers import pipeline

typo_checker = pipeline("ner", model="mrm8488/distilbert-base-multi-cased-finetuned-typo-detection",
                        tokenizer="mrm8488/distilbert-base-multi-cased-finetuned-typo-detection")

result = typo_checker("я живу в Мосве")
result[1:-1]

 #[{'word': 'я', 'score': 0.7886862754821777, 'entity': 'ok', 'index': 1},
 #{'word': 'жив', 'score': 0.6303715705871582, 'entity': 'ok', 'index': 2},
 #{'word': '##у', 'score': 0.7259598970413208, 'entity': 'ok', 'index': 3},
 #{'word': 'в', 'score': 0.7102937698364258, 'entity': 'ok', 'index': 4},
 #{'word': 'М', 'score': 0.5045614242553711, 'entity': 'ok', 'index': 5},
 #{'word': '##ос', 'score': 0.560469925403595, 'entity': 'typo', 'index': 6},
 #{'word': '##ве', 'score': 0.8228507041931152, 'entity': 'ok', 'index': 7}]

result = typo_checker("I live in Moskkow")
result[1:-1]

 #[{'word': 'I', 'score': 0.7598089575767517, 'entity': 'ok', 'index': 1},
 #{'word': 'live', 'score': 0.8173692226409912, 'entity': 'ok', 'index': 2},
 #{'word': 'in', 'score': 0.8289134502410889, 'entity': 'ok', 'index': 3},
 #{'word': 'Mo', 'score': 0.7344270944595337, 'entity': 'ok', 'index': 4},
 #{'word': '##sk', 'score': 0.6559176445007324, 'entity': 'ok', 'index': 5},
 #{'word': '##kow', 'score': 0.8762879967689514, 'entity': 'ok', 'index': 6}]

不幸的是,它似乎并不总是有效,但也许它对您的用例来说已经足够了。

另一种选择是SpaCy。对于不同的语言,他们没有那么多的模型,但是使用斯派西氏EntityRuler,很容易手动定义新的实体,即“扩展实体识别数据库”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44763499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档