小编典典

python中的文本语言检测

python

我正在尝试检测可能由未知数量的语言组成的文本的语言。以下代码为我提供了不同的语言作为答案 注意:我减少了评论,因为它不允许在帖子“”中给出错误

print(detect(كانت جميله وممتعة للأطفال اولا حيث اماكن اللعبر))
print(detect(的马来西亚))
print(detect(Vi havde 2 perfekte dage i Legoland Malaysia))
print(detect(Wij hebben alleen gekozen voor het waterpark maar daar ben je vrijs snel doorheen. Super leuke glijbanen en overal ruimte om te zitten en te liggen. Misschien volgende keer een gecombineerd ticket kopen met ook toegang tot waterpark))
print(detect(This is a park thats just ok, nothing great to write home about.  There is barely any shade, the weather is always really hot so they need to take this into consideration. The atractions are just meh. I would only go if you are a fan of lego, for the sculptures are nice.))

这是输出

ar
zh-cn
da
nl
en

但是使用以下循环,所有评论都会给我“ en”的结果

from langdetect import detect
import pandas as pd
df = pd.read_excel('data.xls') #
lang = []    
for r in df.Review:
    lang = detect(r)
    df['Languagereveiw'] = lang

所有五行的输出均为“ en”。

需要指导,缺少的链在哪里?

这是样本数据

其次,如何获得语言的完整名称,即“ en”的英语


阅读 213

收藏
2021-01-20

共1个答案

小编典典

在循环中,您通过执行以下操作覆盖整个列:

df['Languagereveiw'] = lang

如果要在for循环中使用,请使用iteritems

for index, row in df['Review'].iteritems():
    lang = detect(row) #detecting each row
    df.loc[index, 'Languagereveiw'] = lang

但是,您可以放弃循环并执行

df['Languagereveiw'] = df['Review'].apply(detect)

在整个列上执行函数的语法糖

关于您后面的关于从语言代码转换为完整描述的问题:

“ en”到“ english”,

多语种

这提供了检测语言,获取语言代码和完整描述的功能

2021-01-20