【问题标题】:How to identify Spanish vs. English Text from a csv of tweets?如何从推文的 csv 中识别西班牙语和英语文本?
【发布时间】:2021-01-01 11:48:14
【问题描述】:

我正在尝试创建一个列,用于从包含多行推文的数据框中识别英语和西班牙文推文。理想情况下,英文推文将被归类为 1,而西班牙文推文将被标记为 0。

最终目标是能够从我的数据框中过滤掉西班牙语推文,以将英文推文保存在新的 CSV 中。我查看了使用 Textblob、langdetect 和 fastText,但我发现的所有内容都提供了一次仅在 1 个文本字符串上运行代码的说明。

有没有一种简单的方法可以使用 Python 按语言(英语/西班牙语)对整个数据框进行分类?

【问题讨论】:

    标签: python twitter nlp


    【解决方案1】:

    在这种情况下可以使用apply 方法。以langdetect为例:

    >>> df = pd.DataFrame({"text": ["hello, this is a tweet", "hola esto es un tweet"]})
    >>> df["language"] = df["text"].apply(detect)
    >>> df
                        text language
    0  hello this is a tweet       en
    1  hola esto es un tweet       es
    

    或者在您的特定情况下,如果您希望 0、1 作为指标,您可以这样做:

    >>> df["language"] = df["text"].apply(lambda x: (detect(x) == "en") * 1)
    >>> df
                        text  language
    0  hello this is a tweet         1
    1  hola esto es un tweet         0
    

    【讨论】:

    • @GHOST5454 非常感谢您的分享!我尝试了您的代码,它运行良好,但我仍然无法使用我自己的包含 53,000 多行的数据集运行它。出于某种原因,我不断收到以下错误消息:'LangDetectException: No features in text.'
    • 我也找到了这篇文章,github.com/Mimino666/langdetect/issues/44我不明白的是如何应用python的异常处理,{try & catch},投稿人描述的方式。
    • 您可以将函数传递给.apply,而不是使用lambda,其中包含try/except 逻辑!考虑首先仅针对 df 的子集运行并显示未解析的行以查看它们是否有意外的内容(例如数字或 None 值)
    【解决方案2】:
    • 我认为有两种方法。

      i) 训练模型以确定文本是西班牙语还是英语 (自然语言处理)。

      ii) 只需将句子放到列表中并使用 if 条件 根据条件给出 1 或 0 的西班牙语字符。

      希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 2017-10-26
      • 2016-04-16
      • 1970-01-01
      • 2021-07-24
      相关资源
      最近更新 更多