python - 有没有办法在python中检测和区分英语和罗马乌尔都语?
问题描述
基本上我有一个 RomanUrduDataSet (乌尔都语是在英语字母的帮助下编写的,例如 Sahi-right),其中还包括一些英语单词。而且我必须检测包含多少英语单词以及它们是什么。换句话说,想要区分两种语言,即英语和罗马乌尔都语都使用相同的字母集。例如“总理瓦泽尔-阿扎姆”
我在 colab 中使用 python 尝试了 spacy 和 spacy_langdetect 包,它适用于所有其他语言,但不幸的是包括罗马乌尔都语单词作为英语单词。例如文本“这是英文文本 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。{'语言':'fr','分数':0.9999962796815557}
但我想要的结果是:
这个英文文本 {'language': 'en', 'score':
sai kaha {'language': 'roman-urdu', 'score':
解决方案
你可以让 SpaCy 通过 n-gram 识别语言(在这种情况下三元组可以工作)和自定义Sentencizer
推荐阅读
- bash - 如何在树莓派上使用 ```.bashrc``` 中的 ```"./path/to/file"``` 运行编译后的 C++ 代码?
- sql - 创建一个新列,说明actual_obs 是否满足oracle 中的recommended_obs
- node.js - 将字符串映射到 ReadableStream
在节点 - r - 如何摆脱格子中的线条排列Grob
- enums - raku 类型的枚举不适用于自定义类型
- sqlite - 如何在 Qt 5 中加载 Sqlite 扩展
- python - 如何在一个字符串中添加多个数字(python)
- python - 使用 Regex Python 在特殊字符之间提取字符
- airflow - 如何删除所有匹配的记录?
- php - 找到可以在同一可用时间互相访问的用户(时间重叠)