如何在数据库中存储分词文本?

2 投票
2 回答
1213 浏览
提问于 2025-04-16 06:44

我有个简单的问题。我在做一些轻量级的数据抓取,所以每隔几天就会有新内容出现。我写了一个分词器,想用它来做一些文本挖掘的工作。具体来说,我在使用Mallet的主题建模工具,其中一个步骤是把文本分词,才能进行后续处理。由于我的数据库里有很多文本,分词的过程花费了相当多的时间(我这里用的是正则表达式)。

因此,把分好词的文本存储在数据库里是否是个常见做法?这样的话,如果我需要进行其他文本挖掘,比如主题建模或词性标注,就可以直接使用分好的词,省去分词的步骤。这种做法有什么缺点吗?

2 个回答

1

我把分词后的文本存储在MySQL数据库里。虽然我不太喜欢和数据库沟通时带来的额外负担,但我发现数据库可以帮我完成很多处理任务(比如在复杂的句法模式中搜索依赖解析树)。

1

缓存中间表示

在处理文档的过程中,缓存那些由比较慢的组件生成的中间结果是很常见的做法。比如说,如果你需要为每个文档中的所有句子生成依赖解析树,那你就只需要解析一次文档,然后重复使用这个结果,这样做才是最合理的。

慢速分词

不过,我很惊讶你觉得分词速度很慢,因为通常在分词之后的处理步骤才是最耗时的地方。

你用的是什么工具来进行分词呢?如果你是用Python,并且自己写了分词的代码,建议你试试NLTK里提供的分词工具(比如说TreebankWordTokenizer)。

还有一个不错的分词工具,虽然不是用Python写的,就是PTBTokenizer,它是和斯坦福解析器以及斯坦福CoreNLP的完整NLP流程一起提供的。

撰写回答