【问题标题】:Dropping non-English text with langdetect使用 langdetect 删除非英文文本
【发布时间】:2021-04-09 14:17:49
【问题描述】:

我正在尝试使用 langdetect 删除文本中所有非英语的语言。

def det(x):
    try:
        language = detect(x)
    except:
        language = 'Other'
    return language

df['langue'] = df['Tweet'].apply(det)
filtered_for_english = df.loc[df['langue'] == 'en']

上面的代码是我试过的。它会检测每条推文中使用的语言,但不会从我的数据框中删除非英语推文。

生成的数据框:

0        es
1        es
2        es
3        en
4        en
         ..
14272    en
14273    en
14274    en
14275    it
14276    en
Name: langue, Length: 14277, dtype: object

如何修复此代码?

【问题讨论】:

  • 生成的数据框是什么?您可以通过print(set(filtered_for_english['langue'])) 来查看结果中的各种语言。
  • 我已经编辑了我的问题以显示生成的数据框。由此我仍然可以看出我的数据框中有非英文文本。
  • 你也可以试试这个:filtered_for_english = df[df['langue'].str.contains('en')]

标签: python pandas twitter nlp language-detection


【解决方案1】:

这个解决方案对我来说效果很好。

from langdetect import detect

def detect_english(text):
try:
    return detect(text) == 'en'
except:
    return False

像下面这样传递 pandas 数据框,以消除数据框中的非英语文本数据。

df = df[df['text'].apply(detect_english)]

我有 5000 个样本,上面的实现删除了一些并返回了 4721 个英文文本数据。

注意:colab 中的直接导入对我没有用。我不得不做!pip install langdetect

【讨论】:

    猜你喜欢
    • 2017-05-08
    • 2011-04-08
    • 2013-08-11
    • 2015-10-01
    • 2021-08-27
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 2022-01-11
    相关资源
    最近更新 更多