我正在使用 python 编写文本挖掘脚本。我需要从数据集中检测自然语言字段的语言。
问题是,98% 的行都是西班牙语和加泰罗尼亚语。我尝试使用一些算法,比如stopwords
一个或langdetect
库,但是这些语言共享很多单词,所以他们失败了很多。
我正在寻找一些想法来改进这个算法。
一个想法是,用一些特定于西班牙语和加泰罗尼亚语的单词制作一本字典,所以如果一个文本包含这些单词中的任何一个,它就会被标记为该语言。
我正在使用 python 编写文本挖掘脚本。我需要从数据集中检测自然语言字段的语言。
问题是,98% 的行都是西班牙语和加泰罗尼亚语。我尝试使用一些算法,比如stopwords
一个或langdetect
库,但是这些语言共享很多单词,所以他们失败了很多。
我正在寻找一些想法来改进这个算法。
一个想法是,用一些特定于西班牙语和加泰罗尼亚语的单词制作一本字典,所以如果一个文本包含这些单词中的任何一个,它就会被标记为该语言。
西班牙语和加泰罗尼亚语(注意:专有名称和借词会有例外,例如Barça):
esp_chars = "ñÑáÁýÝ"
cat_chars = "çÇàÀèÈòÒ·ŀĿ"
例子:
sample_texts = ["El año que es abundante de poesía, suele serlo de hambre.",
"Cal no abandonar mai ni la tasca ni l'esperança."]
for text in sample_texts:
if any(char in text for char in esp_chars):
print("Spanish: {}".format(text))
elif any(char in text for char in cat_chars):
print("Catalan: {}".format(text))
>>> Spanish: El año que es abundante de poesía, suele serlo de hambre.
Catalan: Cal no abandonar mai ni la tasca ni l'esperança.
如果这还不够,您可以扩展此逻辑以搜索语言专有的二合字母、字母组合或单词:
仅限西班牙语 | 仅限加泰罗尼亚语 | |
---|---|---|
字 | como y su con él otro |
com i seva amb ell altre |
初始有向图 | d' l' |
|
有向图 | ss tj qü l·l l.l |
|
终端有向图 | ig |
仅在西班牙语中少量出现的加泰罗尼亚语字母组合
tx
tg
<sup>(Es. exceptions postgrado, postgraduado, postguerra )ny
<sup>(例如,例外情况大多以in-、en-、con- + y-为前缀)ll
(终端) (Es. exceptions (loanwords): detall, nomparell )googletrans
图书馆您还可以使用googletrans库来检测语言:
from googletrans import Translator
translator = Translator()
for text in sample_texts:
lang = translator.detect(text).lang
print(lang, ":", text)
>>> es : El año que es abundante de poesía, suele serlo de hambre.
ca : Cal no abandonar mai ni la tasca ni l'esperança.