我有一个简单的问题。我正在做一些轻松的爬行,所以新内容每隔几天到达一次。我编写了一个tokenizer,并希望将其用于某些文本挖掘目的。具体来说,我正在使用Mallet的主题建模工具,其中一个管道是将文本标记为标记,然后才能进行进一步处理。使用我的数据库中的文本量,需要花费大量时间来标记文本(我在这里使用正则表达式)。
因此,将标记化文本存储在数据库中是一种规范,以便标记化数据可以随时可用,如果我需要它们用于其他文本挖掘目的,例如主题建模,POS标记,则可以跳过标记化?这种方法的缺点是什么?
答案 0 :(得分:1)
缓存中间表示
缓存由文档处理管道中较慢组件创建的中间表示是很正常的。例如,如果每个文档中的所有句子都需要dependency parse trees,那么除了解析文档一次然后重复使用结果之外,做任何事情都会非常疯狂。
慢速标记
然而,令我感到惊讶的是,令牌化对你来说真的很慢,因为标记化下游的东西通常是真正的瓶颈。
您使用什么包进行标记化?如果您正在使用Python并且编写了自己的标记化代码,则可能需要尝试 NLTK (例如TreebankWordTokenizer)中包含的其中一个标记生成器。
另一个好的标记器,虽然不是用Python编写的,但是 PTBTokenizer 和 Stanford Parser }中包含的Stanford CoreNLP强大的>端到端的NLP管道。
答案 1 :(得分:0)
我将标记化文本存储在MySQL数据库中。虽然我并不总是喜欢与数据库通信的开销,但我发现有很多处理任务我可以要求数据库为我做(比如在复杂的语法模式中搜索依赖关系解析树)。