簡體   English   中英

如何有效地檢測 python 列表中字符串的語言?

[英]How to efficiently detect language for a string on python list?

我一直在嘗試使用 langdetect,但是我的結果並不令人滿意。 請看下面:

from langdetect import detect   
myText = ['something like this', 'hello, I hope', 'bonjour', 'guten tag', 'hola amigos']

languages = []

for x in range(len(myText)):
    languages.append(detect(myText[x]))

語言變量返回:

['en', 'en', 'hr', 'sv', 'so']

有人可以推薦一種更有效的方法來為我的上述場景檢測字符串語言嗎? 謝謝!

它為您提供准確的結果,但采用ISO 639-1 代碼短格式語言。 您可以使用字典 map 這些短代碼到它們對應的廣義語言名稱,例如:

language_dict = {'en' : 'english', ...}

對於替代方案,您可以查看textblob

from textblob import TextBlob
b = TextBlob(myText[2])
b.detect_language()
# output : 'fr'

對於myText列表,給出的相應結果是:

['en', 'en', 'fr', 'de', 'es']

您根本沒有足夠的文本來正確檢測語言。 檢查detect_langs方法報告的概率:

from langdetect import detect, detect_langs
myText = ['something like this', 'hello, I hope', 'bonjour', 'guten tag', 'hola amigos']

languages = []

for text in myText:
    languages.append((text, detect_langs(text)))

print(languages)

給出:

[('something like this', [en:0.7142843359964415, no:0.2857134272509894]), 
('hello, I hope', [en:0.5714282536622661, it:0.42856936839505744]), 
('bonjour', [hr:0.4285730214431372, sq:0.28571322755605805, fr:0.2857129560702645]),
('guten tag', [sv:0.999995044011124]), 
('hola amigos', [so:0.9999965325258])]

看看bonjour的結果是如何混合的 - 沒有一種語言比其他語言有具體的領先優勢。

現在,如果我在該示例中添加更多文本:

from langdetect import detect_langs

print(detect_langs('Bonjour, mon ami'))

這給出了:

[fr:0.8571383531700392, sq:0.14285710967856416]

這要准確得多。

所以回答你的問題:獲取更多數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM