用于标记英文文本的正则表达式

时间:2010-09-13 19:56:57

标签: regex text nlp

标记英文文本的最佳正则表达式是什么?

英文代币是指由最大数量的字符组成的原子,可以有意义地用于NLP目的。类比是任何编程语言中的“标记”(例如,在C中,'{','[','hello','&'等可以是标记)。有一个限制:虽然英文标点字符可以是“有意义的”,但为了简单起见,当它们没有出现在\ w +的中间时,让我们忽略它们。所以,“你好,世界。”收益'你好'和'世界';同样地,“你很好看。”可能会产生[你,是,好看]或[你,好,好看]。

4 个答案:

答案 0 :(得分:5)

Treebank Tokenization

Penn Treebank (PTB) tokenization是一种用于自然语言处理(NLP)工作的相当常见的标记化方案。

您可以找到带有相应正则表达式的sed脚本来获取此标记化here

软件包

但是,大多数NLP软件包都提供了随时可用的标记化程序,因此您不需要编写自己的标记程序。例如,如果您使用的是python,则可以使用TreebankWordTokenizer提供的NLTK。如果您使用基于Java的Stanford Parser,默认情况下会使用edu.stanford.nlp.processor.PTBTokenizer对您提供的任何句子进行标记。

答案 1 :(得分:2)

您可能不应该尝试使用正则表达式来标记英文文本。在英语中,一些令牌有几种不同的含义,你只能通过理解找到它们的上下文来知道哪些是正确的,这需要在某种程度上理解文本的含义。例子:

  • 字符'可以是撇号,也可以用作引用某些文字的单引号。
  • 句号可以是句子的结尾,也可以表示缩写。或者在某些情况下,它可以同时履行这两个角色。

尝试使用自然语言解析器。例如,您可以使用Stanford Parser。它可以免费使用,并且在标记英文文本时比任何正则表达式都要好得多。这只是一个例子 - 您还可以使用许多其他NLP库。

答案 2 :(得分:1)

您可以在[^\p{L}]+上拆分。它将拆分每个不包含字母的字符组。


资源:

答案 3 :(得分:0)

有一些复杂性。

一个单词将有[A-Za-z0-9\-]。但是,除了单词之外,你可能还有其他一些分隔符!您可以从[(\s]开始,以[),.-\s?:;!]

结尾