我使用Gensim的优秀库来使用LSI计算语料库的相似性查询。但是,我有一种明显的感觉,结果可能会更好,我试图弄清楚我是否可以调整语料库本身以改善结果。
我对如何拆分文件有一定的控制权。我的原始数据有很多非常短的文档(文档中的平均长度为12个单词,但是存在长度为1-2个单词的文档...),并且有几种逻辑方法可以将多个文档连接成一个文档。问题是,我不知道它是否值得这样做(如果是这样,在多大程度上)。我无法找到解决这个问题的任何材料,只能找到语料库的大小和词汇量的大小。我认为这是因为,在一天结束时,文档的大小受到词汇量大小的限制。但我确信仍有一些通用指南可以帮助做出这一决定。
什么是太短的文件?什么太长了? (我假设后者是|V|
的函数,但前者很容易成为常数值。)
有没有人有这方面的经验?任何人都可以指向我解决这个问题的论文/博客文章/研究的方向吗?非常感谢!
已编辑添加: 关于分组文档的策略 - 每个文档都是在双方之间发送的文本消息。潜在的分组基于此,我还可以考虑发送消息的时间。这意味着,我可以在一小时内或某一天内对A和B之间发送的所有消息进行分组,或者只是将两者之间的所有消息分组。我也可以决定组合在一起的最小或最大数量的消息,但这正是我的问题所在 - 我怎么知道理想长度是多少?
答案 0 :(得分:1)
在每个文档中查看单词数量似乎不是正确的方法。 LSI / LSA是通过检测常见共现来捕获文档的基础语义。
您可能需要阅读:
来自2的有效摘录:
LSI的一个重要特征是它没有做出任何假设 关于数据背后的特定生成模型。是否 语料库中术语的分布是“高斯”,泊松,或 其他一些与这项技术的有效性无关 至少就其数学基础而言。因此,它是 不正确地说使用LSI需要假设该属性 值通常是分布的。
我更关心的是,如果短文档共享类似的共同术语,那么LSI将形成一个适当的主题,将所有这些文档分组,供人类共享同一主题。通过用更频繁和通用的术语代替稀有术语,这很难自动完成(可能使用WordNet /本体)。但这是一个需要进一步研究的非常长的镜头。
关于启发式的更具体的答案:
我最好的选择是将对话视为您的文件。因此,分组将在交换消息的时间接近度上。什么东西长达几分钟(四分之一?)我会聚在一起。但可能存在误报(强烈取决于数据集的实际内容)。与NLP中的任何超参数一样 - 您的里程会有所不同......所以值得做一些实验。
答案 1 :(得分:1)
在应用LDA时,短文档确实是一个挑战,因为对于短文档(稀疏数据),共现统计一词的估计值要差得多。正如您所提到的,缓解此问题的一种方法是通过某种启发式度量将多个短文本聚合成一个较长的文档。
针对这种情况的一个特殊性测试案例是主题建模Twitter数据,因为它定义为140个字符。在Empirical Study of Topic Modeling in Twitter(Hong等,2010)中,作者认为
在聚合用户消息上培训标准主题模型会导致a 更快的培训过程和更好的质量。
然而,他们还提到不同的聚合方法会导致不同的结果:
使用不同聚合策略学习的主题 数据彼此差异很大。
我的建议:
如果您使用自己的启发式方法将短消息汇总到较长的文档中,请务必尝试使用不同的聚合技术(可能是所有" sensical"的)
考虑使用"无启发式" LDA变体更适合短消息,例如Unsupervised Topic Modeling for Short Texts Using Distributed Representations of Words