【问题标题】:Removing punctuation marks in tokenization nltk with dataframe (python)使用数据框(python)删除标记化 nltk 中的标点符号
【发布时间】:2021-12-18 13:55:55
【问题描述】:

我有一些文本可以从停用词、链接、表情符号等中处理。在对我的数据框进行标记后,我得到了一张不太好的图片。有很多额外的标点符号被识别为单独的单词并出现在处理过的文本中。添加图像

为此,我使用以下命令:

Data_preprocessing['clean_custom_content_tokenize'] = Data_preprocessing['tweet_without_stopwords'].apply(nltk.word_tokenize)

如您所见,有很多字符,如破折号、冒号等。问题立即弹出,为什么不在标记化之前应用去除标点符号。关键是我需要的文本中有十进制值。在分词之前去掉标点符号会将它们分成两个单词,这是不正确的。

在标记化之前删除标点符号会发生什么的示例:

custom_pipeline2 = [preprocessing.remove_punctuation]
Data_preprocessing['clean_custom_content_tokenize'] = Data_preprocessing['tweet_without_stopwords'].pipe(hero.clean, custom_pipeline2)
Data_preprocessing['clean_custom_content_tokenize'] = Data_preprocessing['clean_custom_content_tokenize'].apply(nltk.word_tokenize)

我找到了几个示例如何解决我的符号问题,但是当数据不是数据框而是字符串时。你能以某种方式自定义 nltk 标记化吗?或者稍后使用某种正则表达式来处理结果列表?

【问题讨论】:

  • @Gedas Miksenas,是的,我找到了这篇文章,但它并不能解决我的十进制数问题。它们也被分成两个独立的数字。
  • @Gedas Miksenas,很可能在标记化之后使用正则表达式会更正确,但是这里是如何正确编写它,我不知道

标签: python dataframe nlp nltk


【解决方案1】:
Data_preprocessing['clean_custom_content_tokenize'] = Data_preprocessing['clean_custom_content_tokenize'].apply(lambda x: re.sub(r"(, '[\W\.]')",r"", str(x)))

【讨论】:

  • 虽然这段代码可以回答问题,但最好包含一些上下文,解释如何它的工作原理和何时 i> 使用它。从长远来看,纯代码的答案没有用处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-04
  • 1970-01-01
  • 2020-05-14
  • 2021-09-16
相关资源
最近更新 更多