gpt4 book ai didi

python - 多语言文本语料库的词干提取

转载 作者:行者123 更新时间:2023-12-01 01:39:36 25 4
gpt4 key购买 nike

我有一个文本语料库,其中包含英语、俄语和波兰语的项目描述。

该文本语料库有 68K 个观察值。其中一些观察结果是用英语写的,一些是用俄语写的,还有一些是用波兰语写的。

您能否告诉我在这种情况下如何正确经济有效实现词干提取?我无法对俄语单词使用英语词干分析器,反之亦然。

不幸的是,我找不到好的语言标识符。例如。 langdetect 运行速度太慢并且经常出错。例如,我尝试识别英语单词“today”的语言:

detect("today") 
"so"
# i.e Somali

到目前为止,我的代码实现看起来很糟糕。我只是在另一个上使用一个词干分析器:

import nltk
# polish stemmer
from pymorfologik import Morfologik

clean_items = []

# create stemmers

snowball_en = nltk.SnowballStemmer("english")
snowball_ru = nltk.SnowballStemmer("russian")
stemmer_pl = Morfologik()

# loop over each item; create an index i that goes from 0 to the length
# of the item list

for i in range(0, num_items):
# Call our function for each one, and add the result to the list of
# clean items

cleaned = items.iloc[i]

# to word stem
clean_items.append(snowball_ru.stem(stemmer_pl(snowball_en.stem(cleaned))))

最佳答案

即使 API 不是那么好,您也可以使 langdetect 将自身限制为仅适用于您实际使用的语言。例如:

from langdetect.detector_factory import DetectorFactory, PROFILES_DIRECTORY
import os

def get_factory_for(langs):
df = DetectorFactory()
profiles = []
for lang in ['en', 'ru', 'pl']:
with open(os.path.join(PROFILES_DIRECTORY, lang), 'r', encoding='utf-8') as f:
profiles.append(f.read())
df.load_json_profile(profiles)

def _detect_langs(text):
d = df.create()
d.append(text)
return d.get_probabilities()

def _detect(text):
d = df.create()
d.append(text)
return d.detect()

df.detect_langs = _detect_langs
df.detect = _detect
return df

虽然不受限制的langdetect似乎认为“today”是索马里语,但如果您只会英语、俄语和波兰语,您现在可以这样做:

df = get_factory_for(['en', 'ru', 'pl'])
df.detect('today') # 'en'
df.detect_langs('today') # [en:0.9999988994459187]

它仍然会错过很多(“snow”显然是波兰语),但它仍然会大大降低你的错误率。

关于python - 多语言文本语料库的词干提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52039155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com