如何在数据库中存储分词文本?
我有个简单的问题。我在做一些轻量级的数据抓取,所以每隔几天就会有新内容出现。我写了一个分词器,想用它来做一些文本挖掘的工作。具体来说,我在使用Mallet的主题建模工具,其中一个步骤是把文本分词,才能进行后续处理。由于我的数据库里有很多文本,分词的过程花费了相当多的时间(我这里用的是正则表达式)。
因此,把分好词的文本存储在数据库里是否是个常见做法?这样的话,如果我需要进行其他文本挖掘,比如主题建模或词性标注,就可以直接使用分好的词,省去分词的步骤。这种做法有什么缺点吗?
2 个回答
1
我把分词后的文本存储在MySQL数据库里。虽然我不太喜欢和数据库沟通时带来的额外负担,但我发现数据库可以帮我完成很多处理任务(比如在复杂的句法模式中搜索依赖解析树)。
1
缓存中间表示
在处理文档的过程中,缓存那些由比较慢的组件生成的中间结果是很常见的做法。比如说,如果你需要为每个文档中的所有句子生成依赖解析树,那你就只需要解析一次文档,然后重复使用这个结果,这样做才是最合理的。
慢速分词
不过,我很惊讶你觉得分词速度很慢,因为通常在分词之后的处理步骤才是最耗时的地方。
你用的是什么工具来进行分词呢?如果你是用Python,并且自己写了分词的代码,建议你试试NLTK里提供的分词工具(比如说TreebankWordTokenizer)。
还有一个不错的分词工具,虽然不是用Python写的,就是PTBTokenizer,它是和斯坦福解析器以及斯坦福CoreNLP的完整NLP流程一起提供的。