在python中有没有办法检测和区分英语和罗马乌尔都语?

在python中有没有办法检测和区分英语和罗马乌尔都语?,python,nlp,google-colaboratory,language-detection,Python,Nlp,Google Colaboratory,Language Detection,基本上我有一个罗马乌尔都语集(乌尔都语用英语字母书写,如Sahi right),其中还包括一些英语单词。我必须检测英语中有多少单词,它们是什么。换句话说,我们想要区分两种语言,即英语和罗马乌尔都语都使用相同的字母表。e、 g“瓦泽尔·阿扎姆总理” 我用python在colab中尝试了spacy和spacy_Langdetate软件包,它对所有其他语言都很有效,但不幸的是,将罗马乌尔都语单词作为英语单词。例如,对于文本“这是英语文本sai kaha”,其中“sai kaha”(说得好)属于罗马乌尔

基本上我有一个罗马乌尔都语集(乌尔都语用英语字母书写,如Sahi right),其中还包括一些英语单词。我必须检测英语中有多少单词,它们是什么。换句话说,我们想要区分两种语言,即英语和罗马乌尔都语都使用相同的字母表。e、 g“瓦泽尔·阿扎姆总理”

我用python在colab中尝试了spacy和spacy_Langdetate软件包,它对所有其他语言都很有效,但不幸的是,将罗马乌尔都语单词作为英语单词。例如,对于文本“这是英语文本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} 在柏林有两个孩子。{'language':'de','score':0.999999 79601967207} 你让我去公园。{'language':'es','score':0.9999976130316337} 这是一个美好的夏天,12岁的加拿大人。{'language':'fr','score':0.999999 62796815557}

但我期望的结果是:

此英文文本{'language':'en','score':

赛卡哈{'language':'roman urdu','score':

您的评论已经说明了这一点-这是句子级别的语言。如果您希望sai kaha有一种不同的语言,那么它必须是。因此,DependencyParser模型需要不同,用于句子边界检测,或者您可以尝试用量刑器实现自己的模式。

您可以d通过n-gram识别语言(在这种情况下,三角图可以工作)此外,在罗马乌尔都语中had是means limit,而在英语中had被用作帮助动词并表示过去。感谢您的友好回复。N-gram或trigram仅在我们有两个不同语言的连续句子时才起作用。实际问题是单词级检测,例如Tumkitny Funy ho唯一有趣的是英语单词rest属于罗马乌尔都语。你认为word2vec能更好地帮助检测和区分两个混合语言单词吗?(我的想法有点偏颇)