【发布时间】:2019-11-01 07:18:30
【问题描述】:
基本上我有一个 RomanUrduDataSet(乌尔都语是在英语字母的帮助下编写的,例如 Sahi-right),其中还包括一些英语单词。而且我必须检测包含多少英语单词以及它们是什么。换句话说,想要区分两种语言,即英语和罗马乌尔都语都使用相同的字母集。例如“总理瓦泽尔-阿扎姆”
我在 colab 中使用 python 尝试了 spacy 和 spacy_langdetect 包,它适用于所有其他语言,但不幸的是包括罗马乌尔都语单词作为英语单词。例如文本 “This is English text sai kaha”,其中“sai kaha”(说得好)属于罗马乌尔都语,但我下面的代码将其包含为英语单词。
import spacy
from spacy_langdetect import LanguageDetector
nlp = spacy.load("en")
nlp.add_pipe(LanguageDetector(), name="language_detector", last=True)
text = "This is English text Er lebt mit seinen Eltern und seiner Schwester in Berlin. Yo me divierto todos los días en el parque. Je m'appelle Angélica Summer, j'ai 12 ans et je suis canadienne."
doc = nlp(text)
# document level language detection. Think of it like average language of document!
print(doc._.language['language'])
# sentence level language detection
for i, sent in enumerate(doc.sents):
print(sent, sent._.language)
输出:
这是英文文本 sai kaha {'language': 'en', 'score': 0.9999982400559537}
Er lebt mit seinen Eltern und seiner Schwester 在柏林。 {'语言':'de','分数':0.9999979601967207}
Yo me divierto todos los días en el parque。 {'语言':'es','分数':0.9999976130316337}
Je m'appelle Angélica Summer, j'ai 12 ans et je suis canadienne。 {'language': 'fr', 'score': 0.9999962796815557}
但我想要的结果是:
这个英文文本 {'language': 'en', 'score':
sai kaha {'language': 'roman-urdu', 'score':
【问题讨论】:
标签: python nlp google-colaboratory language-detection