【问题标题】:Clean text data in Python在 Python 中清理文本数据
【发布时间】:2018-03-19 17:22:47
【问题描述】:

我想在删除所有数字(如 189、98001)、特殊字符('、_、“、(,))后为文本数据创建一个新列(该列的每一行是一个描述),以及带有数字或特殊字符的字母(e21x16、e267、e4、e88889、entry778、id2、n27th、pv3、)。

所以我写了下面的函数。但是,返回的结果仍然包含数字和特殊字符。基本上,我的目标是只保留英文单词和缩写。有谁知道为什么我的功能不起作用。

def standardize_text(df, text_field):
  df[text_field] = df[text_field].str.lower()
  df[text_field] = df[text_field].str.replace(r'(', '') 
  df[text_field] = df[text_field].str.replace(r')', '')
  df[text_field] = df[text_field].str.replace(r',', '')
  df[text_field] = df[text_field].str.replace(r'_', '')
  df[text_field] = df[text_field].str.replace(r"'", "")
  df[text_field] = df[text_field].str.replace(r"^[a-z]+\[0-9]+$", "")
  df[text_field] = df[text_field].str.replace(r"^[0-9]{1,2,3,4,5}$", "")
  return df

【问题讨论】:

  • 为什么r"^[a-z]+\[0-9]+$" 中有'\'
  • 您能否提供一个示例说明该列是怎样的以及您希望它是什么?
  • 您还应该提供df的类型及其成员。
  • 这里是一个例子:“(n)完全洒水 42' x 57',三层三层单元公寓(townh”(还有一些错字,我不知道如何处理)。作为我想对这些描述进行主题建模,所以我需要删除非单词,例如数字和特殊字符。我不确定这是否有意义

标签: python text nlp data-cleaning


【解决方案1】:

使用名为“textcleaner”的库。请参阅 repositorylink。 这个article 可能会对你有所帮助。

!pip install textcleaner
import textcleaner as tc 

from textcleaner import *

现在只需致电main_cleaner(<FILE_NAME>) 它会返回包含所有基本预处理的单词列表。

【讨论】:

    【解决方案2】:

    您要么必须将replace 函数的inplace 参数设置为true,要么将返回的df 分配给df 变量

    【讨论】:

    • 当然 OP 确实将结果分配给同一字段。
    • 对不起。数字没有被替换,因为您的正则表达式 "^[a-z]+\[0-9]+$" 要求字符串以数字结尾。试试"^[a-z]+\[0-9]+""\d+"
    猜你喜欢
    • 2021-03-15
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 2020-09-29
    • 2021-12-11
    • 2018-10-28
    • 1970-01-01
    • 2017-09-20
    相关资源
    最近更新 更多