当前位置:   article > 正文

在做nlp任务时,常见的文本清洗操作合集

文本清洗

在进行自然语言处理(NLP)任务之前,通常需要对文本进行清理和预处理,以便提高模型的性能和准确性。以下是一般的文本清理流程:

  1. 去除特殊字符和标点符号:删除文本中的特殊字符、标点符号和非字母数字字符,如@、#、$等。

  2. 转换为小写:将文本中的所有字母转换为小写,以避免大小写的差异。

  3. 分词:将文本分割成单词或子词的序列。分词可以使用现有的分词工具库,如NLTK、spaCy等。

  4. 去除停用词:去除常见的停用词,如“a”、“the”、“is”等,这些词对于大多数NLP任务来说没有太多的信息量。

  5. 词形还原(Lemmatization):将单词还原为其基本形式,如将“running”还原为“run”,以减少词汇的变体。

  6. 去除数字:删除文本中的数字,除非数字对于特定任务有重要意义。

  7. 去除多余的空格:删除文本中多余的空格,只保留单词之间的一个空格。

  8. 去除HTML标签(如果有):如果文本中包含HTML标签,可以使用正则表达式或相关工具库将其去除。

  9. 去除URL链接:删除文本中的URL链接,因为它们通常不包含有用的信息。

  10. 去除特定领域的词汇(可选):根据具体任务的需求,可以去除特定领域的词汇,如领域专有名词、特定术语等。

  1. import re
  2. import nltk
  3. from nltk.corpus import stopwords
  4. from nltk.stem import WordNetLemmatizer
  5. import jieba
  6. stopword = stopwords()
  7. def text_cleanup(text,stopword):
  8. # 将文本转换为小写并去除多余空格
  9. text = text.lower().strip()
  10. # 去除特殊字符和标点符号
  11. text = re.sub(r'[^a-zA-Z0-9\s]', '', text)
  12. # 去除HTML标签
  13. text = re.sub(r'<[^>]*>', '', text)
  14. # 去除URL链接
  15. text = re.sub(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', '', text)
  16. # 词干提取或词形还原(假设使用NLTK库进行词形还原)
  17. lemmatizer = WordNetLemmatizer()
  18. text = ' '.join(lemmatizer.lemmatize(word) for word in text.split())
  19. # 分词
  20. tokens = nltk.word_tokenize(text)
  21. # 去除停用词
  22. stop_words = set(stopword.words("english"))
  23. tokens = [word for word in tokens if word not in stop_words]
  24. # 标记化(假设简单地按照空格进行分割)
  25. tokens = text.split()
  26. # 清除空白字符
  27. tokens = [token.strip() for token in tokens]
  28. # 去除数字
  29. tokens = [token for token in tokens if not token.isdigit()]
  30. return tokens

这里的停用词表是英文的词表,如果需要中文的可以下载中文的停用词表,然后做相同其他的清洗操作:

  1. with open('hitstopword.txt','r',encoding='utf-8') as f:
  2. stop_words = f.read().splitlines()
  3. def ch_text_cleanup(text,stop_words):
  4. words = jieba.lcut(text)
  5. filtered_words = []
  6. for word in words:
  7. if word not in stop_words:
  8. filtered_words.append(word)
  9. return filtered_words

停用词表我用的哈工大的词表,可以向里面加入自己根据具体任务规定的停用词,这个词表网上找一下应该能找到,也有其他的停用词表。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/353706
推荐阅读
相关标签
  

闽ICP备14008679号