python中的文本语言检测

Abr*_*rar 2 python dataframe pandas

我试图检测可能由未知数量的语言组成的文本的语言.下面的代码给了我不同的语言作为答案 注意:我减少了审查,因为它是在帖子""不允许给出错误

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.))
Run Code Online (Sandbox Code Playgroud)

这是输出

ar
zh-cn
da
nl
en
Run Code Online (Sandbox Code Playgroud)

但是使用以下循环,所有评论都会给我'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
Run Code Online (Sandbox Code Playgroud)

所有五行的输出都是'en'.

需要指导缺失的链条在哪里?

这是样本数据

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

EdC*_*ica 8

在你的循环中,你通过这样做覆盖整个列:

df['Languagereveiw'] = lang
Run Code Online (Sandbox Code Playgroud)

如果你想在for循环使用中这样做iteritems:

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

但是,你可以放弃循环而去做

df['Languagereveiw'] = df['Review'].apply(detect)
Run Code Online (Sandbox Code Playgroud)

这是在整个列上执行func的语法糖

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

'en'到'english',

看看多语言

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