1

我使用 StanfordNLP 来标记一组用智能手机编写的消息。这些文本有很多错别字,不遵守标点规则。很多时候缺少空格会影响标记化。

例如,以下句子缺少“California.This”和“university,founded”中的空格。

斯坦福大学位于加利福尼亚州。这所大学是一所伟大的大学,成立于 1891 年。

标记器返回:

{“斯坦福”、“大学”、“是”、“位于”、“在”、“California.This”、“大学”、“是”、“a”、“伟大”、“大学”、“” , "创立", "in", "1891", "."}

正如所观察到的,他们很好地分割了除“California.This”之外的所有标记(我希望有三个标记{“California”“。”“this”})。我查看了标记化规则,并观察到单词的正则表达式接受用于单词中句子结尾的标点符号。

WORD = {LETTER}({LETTER}|{DIGIT}) ([.!?]{LETTER}({LETTER}|{DIGIT}) )*

我删除了最后一部分并重新编译,但标记器仍然没有改变它的行为。

有人知道如何避免这种不需​​要的行为吗?或者有人可以告诉我另一个适用于此类文本的标记器吗?

4

1 回答 1

1

我假设您指的.flex是标记器的文件?

在再次构建之前,您需要根据该规范生成新的 Java 代码。使用flexeverythingAnt 构建任务(请参阅我们的构建规范)。


您可能还会发现Twokenize有用。这是一个独立的推文标记器。它是CMU Noah Smith 小组的TweetNLP 软件包的一部分。(请注意,此代码是 GPL v2。)

于 2015-02-28T18:55:18.153 回答