Java自然语言处理 : Extracting Indicies When Tokenizing Text

标签 java nlp token tokenize information-retrieval

当对文本字符串进行标记时,我需要提取标记化单词的索引。例如,给定:

"Mary didn't kiss John"

我需要类似的东西:

[(Mary, 0), (did, 5), (n't, 8), (kiss, 12), (John, 17)]

其中 0、5、8、12 和 17 对应于标记开始的索引(在原始字符串中)。我不能只依赖空格,因为有些单词会变成 2 个标记。此外,我不能只搜索字符串中的标记,因为该单词可能会出现多次。

一个巨大的障碍是我正在处理“脏”文本。这是语料库中的一个真实示例及其标记化:

字符串:

The child some how builds a boaty  c capable of getting scrtoacross the sea, even after findingovercoming many treachrous rous obsittalcles.

代币:

The, child, some, how, builds, a, boaty, , , c, , capable, of, getting, scrto, , across, the, sea, ,, even, after, finding, , , , , overcoming, many, treachrous, rous, obsittalcles, .

我目前正在使用 OpenNLP 对文本进行标记,但对于使用哪个 API 进行标记化感到矛盾。不过,它确实需要是 Java,所以(不幸的是)Python 的 NLTK 不适用。

任何想法将不胜感激!谢谢!

最佳答案

OpenNLP 将使用 Tokenizer.tokenizePos(String s) 方法返回偏移量,请参阅 OpenNLP API for TokenizerME作为已实现的分词器之一的示例。返回的每个 Span 都包含 token 的开始和结束位置。

您是否决定使用 UIMA 实际上是一个单独的问题,但 OpenNLP 确实为其使用 tokenizePos() 的分词器提供了 UIMA 注释器。然而,如果你只是想标记一个字符串,UIMA 绝对是大材小用......

关于Java自然语言处理 : Extracting Indicies When Tokenizing Text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12398706/

相关文章:

java - 微软图形 : Requesting an Extension returns http 400 bad request

java - 使用 Google App Engine 数据存储区中的实体列表

java - 在 if 语句中为方法调用正确的对象?

java - NLP - 标记化和标记等时出错

python - 如何从语料库中删除无意义或不完整的单词?

java - 如何模拟主要

python - 为什么即使 verb.exc 添加了正确的值,NLTK 词形还原也有错误的输出?

Azure Blob 存储 : token to share access

javascript - JS 混合应用程序 - 在 localStorage 中存储 token

key - PKCS11 : export insensitive and extractable key