标记英文文本的最佳正则表达式是什么?
英文代币是指由最大数量的字符组成的原子,可以有意义地用于NLP目的。类比是任何编程语言中的“标记”(例如,在C中,'{','[','hello','&'等可以是标记)。有一个限制:虽然英文标点字符可以是“有意义的”,但为了简单起见,当它们没有出现在\ w +的中间时,让我们忽略它们。所以,“你好,世界。”收益'你好'和'世界';同样地,“你很好看。”可能会产生[你,是,好看]或[你,好,好看]。
答案 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)
答案 3 :(得分:0)
有一些复杂性。
一个单词将有[A-Za-z0-9\-]
。但是,除了单词之外,你可能还有其他一些分隔符!您可以从[(\s]
开始,以[),.-\s?:;!]