nlp - 将段落分成有意义的子段落

标签 nlp topic-modeling boundary

一般情况下,一个段落包含多个子段落,每个子段落都有一定的含义。
在 NLP 中,如何将段落拆分为有意义的子段落,或者换句话说,我想检测子段落之间的边界

最佳答案

您提出的问题很有趣,但定义不明确,因为“含义”本身的定义很差,而且我们实际上不知道如何区分段落的好分区和坏分区。

但是,我们可以将问题简化为这样:我们希望将相邻的句子分组在一起,如果它们的主题相似,即如果它们是关于相同或相似的对象,或者包含其他相似的单词或短语。因此我们可以正式地描述我们的算法:

  1. 将段落拆分成句子。
  2. 将每个句子表示为某种形式对象(例如,一袋词,或一袋来自 w2v、fasttext、ELMO 或 BERT 的词嵌入,或来自某些神经网络(例如 USE)的句子嵌入)。
  3. 计算每对句子之间的距离(例如句子嵌入之间的余弦距离或字数,或者字嵌入之间的词移动器距离)。
  4. 在此距离矩阵上运行凝聚聚类算法,但有一个附加限制:只能将相邻聚类合并在一起。
  5. 尝试使用不同的停止标准(通常是阈值)对不同的段落进行聚类,并选择产生最有意义的分区的阈值。

如果这个算法看起来像你想要的,我可以在 Python 中提供它的基线实现。

更新请看一下我的基本实现的要点:Spacy 句子向量 + Spacy 句子向量的余弦相似度 + 仅基于相邻句子的朴素聚类。 https://gist.github.com/avidale/e4450da902d36bb14c595987943120dc

关于nlp - 将段落分成有意义的子段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62164280/

相关文章:

python - 检测英语单词和nltk的单词语料库

python - Twitter 对字符串的情感分析

python - 使用 Gensim 获得 LDA 模型最佳主题数量的最佳方法是什么?

python - 如何在轮廓区域内查找和绘制最大的矩形?

javascript - map 边界!如何检查地址是否位于边界内?

javascript - 如何在没有 express 的情况下处理多部分/表单数据请求

regex - 将多段文档拆分为段落编号的句子

python - CNN 模型上的文本分类

python - 使用潜在狄利克雷分配进行主题预测

java - 如何使用java中的spark以word格式查看LDA主题建模中的主题