2

我正在使用 python 编写文本挖掘脚本。我需要从数据集中检测自然语言字段的语言。

问题是,98% 的行都是西班牙语和加泰罗尼亚语。我尝试使用一些算法,比如stopwords一个或langdetect库,但是这些语言共享很多单词,所以他们失败了很多。

我正在寻找一些想法来改进这个算法。

一个想法是,用一些特定于西班牙语和加泰罗尼亚语的单词制作一本字典,所以如果一个文本包含这些单词中的任何一个,它就会被标记为该语言。

4

1 回答 1

0

方法 1:区分字符

西班牙语加泰罗尼亚语(注意:专有名称和借词会有例外,例如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 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.
于 2018-06-01T13:58:11.010 回答