簡體   English   中英

如何將 Polyglot Detector 功能應用於數據幀

[英]How to apply Polyglot Detector function to dataframe

假設我有一個名為df.Text的列,其中包含文本(多於 1 個句子),並且我想使用多語言Detector來檢測語言並將值存儲在新列中df['Text-Lang']我如何確保我還捕獲其他細節,如codeconfidence

testEng ="This is English"
lang = Detector(testEng)
print(lang.language)

返回

名稱:英文代碼:en 置信度:94.0 讀取字節數:1920

df['Text-Lang','Text-LangConfidence']= df.Text.apply(Detector)

以。。結束

AttributeError: 'float' 對象沒有屬性 'encode' 並且 Detector 無法可靠地檢測語言。

我是否錯誤地應用了 Detector 功能或錯誤地存儲了輸出或其他什么?

首先,如果你只需要polyglot進行語言檢測,你最好直接使用pycld2 ,這是在幕后使用的。 它有干凈的 API。

也就是說,您聲明的錯誤來自Text列中的一個值,它是一個實數。 因此,您必須將這樣的值轉換為字符串。

您將遇到的下一個問題是最小文本長度。 如果文本太短, polyglot會拋出異常。 您必須通過傳遞quiet=True來消除異常。

現在,應用Detector將返回一個對象。 所以你必須解析它來提取你想要的信息。 要提取語言名稱,您必須導入icu模塊(它是polyglot的依賴項,因此您已經安裝了它):

import icu
df.Text = df.Text.astype(str)
df['poly_obj'] = df.Text.apply(lambda x: Detector(x, quiet=True))
df['Text-lang'] = df['poly_obj'].apply(lambda x: icu.Locale.getDisplayName(x.language.locale))
df['Text-LangConfidence'] = df['poly_obj'].apply( lambda x: x.language.confidence)

之后,您可以刪除poly_obj列。

你可以試試這個:

testEng ="This is English"
lang = Detector(testEng)
df['Text-Lang']=lang.language.code
df['Text-LangConfidence']=leng.language.confidence

暫無
暫無

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

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