【问题标题】:how to lemmatize string containing numbers and special characters?如何对包含数字和特殊字符的字符串进行词形还原?
【发布时间】:2019-11-08 16:32:13
【问题描述】:

我需要对包含数字和字母数字字符的字符串进行词形还原。示例:

'strawberries1234!@ apples123@'

我还需要保留那些特殊字符和数字。所以上面例子的输出是,

'strawberry1234!@ apple123@'

我需要在大型数据集上执行此操作,因此代码需要尽可能高效。

谢谢。

【问题讨论】:

  • 需要更多细节。你只是想把复数形式变成单数形式?这不是一项小任务,因为它似乎需要某种形式的 NLP。到目前为止,您尝试过什么?
  • 基本上,是的。只需使用正则表达式 r'[^a-zA-Z]' 进行拆分,即可轻松提取字母。我不知道如何取回数字和特殊字符。
  • 正则表达式有特殊字符来提取数字。
  • 这些特殊字符和数字在处理后应该出现在输出中各自的位置。正如我在示例中提到的,'strawberries1234!@' 中的 '1234!@' 应该出现在输出中的 'strawberry' 之后......就像 'strawberry1234!@'

标签: python-3.x nlp lemmatization


【解决方案1】:

说真的,这似乎很简单,不需要进一步详细说明任务。 使用正则表达式以删除所有基于 char 的特殊字符序列,这意味着您不只是 sub() 它们而是找到索引。使用索引提取剩余的字符串,这将是剩余的英文单词。 lemmatize this(lemmatization 是一个删除英文后缀的过程,这意味着字符串右端的字符串元素正在被删除。(在其他语言中,您可能会遇到中缀(xx-y-xx)和外接(y1- xx-y2),这可能需要更复杂的字符串操作)。之后,只需将子字符串与特殊字符再次连接起来,得到词形还原的结果。

【讨论】:

  • 顺便说一句,您的数据中有有趣的噪音,这是什么背景?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 2020-12-25
  • 1970-01-01
  • 1970-01-01
  • 2019-03-20
  • 2016-05-05
  • 2020-11-13
相关资源
最近更新 更多