Есть ли способ обнаружить и различить английский язык и язык римского урду в python? - PullRequest
0 голосов
/ 01 ноября 2019

В основном у меня есть RomanUrduDataSet (урду, написанный с помощью английских алфавитов, например, Sahi-right), который также включает в себя некоторые английские слова. И я должен определить, сколько слов английского языка включены и каковы они. Другими словами, хочет провести различие между двумя языками, то есть английский и роман-урду используют оба набора алфавитов. Например, «Премьер-министр Wazeer-azam»

Я пробовал пакеты spacy и spacy_langdetect в colab, используя python, он работает хорошо для всех других языков, но, к сожалению, включая слова римского урду в качестве слов английского языка. Например, для текста «Это текст на английском языке 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 в Берлине. {'language': 'de', 'score': 0.9999979601967207} Yo me divierto todos los días en el parque. {'language': 'es', 'score': 0.9999976130316337} Je m'appelle Angélica Summer, j'ai 12 ans et je suis canadienne. {'language': 'fr', 'score': 0.9999962796815557}

но мой желаемый результат:

Этот текст на английском языке {'язык ':' en ',' оценка ':
sai kaha {' язык ':' роман-урду ',' оценка ':

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Вы могли бы, чтобы SpaCy идентифицировал язык по n-грамме (триграммы в этом случае работали бы) с пользовательским Sentencizer

0 голосов
/ 01 ноября 2019

Ваши комментарии уже говорят это - это язык уровня предложения. Если вы хотите, чтобы sai kaha имел другой язык, он должен быть его собственным предложением . Таким образом, либо модель DependencyParser должна отличаться, которая используется для определения границ предложений, либо вы можете попробовать реализовать свою собственную с помощью Sentencizer.

...