相关疑难解决方法(0)

在Python中简单实现N-Gram,tf-idf和余弦相似性

我需要比较存储在数据库中的文档,并得出0到1之间的相似性得分.

我需要使用的方法必须非常简单.实现n-gram的vanilla版本(可以定义要使用的克数),以及tf-idf和余弦相似度的简单实现.

有没有可以做到这一点的程序?或者我应该从头开始写这个?

python document tf-idf n-gram vsm

52
推荐指数
3
解决办法
4万
查看次数

不同长度矢量的余弦相似度?

我正在尝试使用TF-IDF将文档分类.我已经为某些文档计算了tf_idf,但是现在当我尝试计算其中两个文档之间的余弦相似度时,我得到一个追溯说:

#len(u)==201, len(v)==246

cosine_distance(u, v)
ValueError: objects are not aligned

#this works though:
cosine_distance(u[:200], v[:200])
>> 0.52230249969265641
Run Code Online (Sandbox Code Playgroud)

切片向量使len(u)== len(v)正确的方法?我认为余弦相似性适用于不同长度的矢量.

我正在使用这个功能:

def cosine_distance(u, v):
    """
    Returns the cosine of the angle between vectors v and u. This is equal to
    u.v / |u||v|.
    """
    return numpy.dot(u, v) / (math.sqrt(numpy.dot(u, u)) * math.sqrt(numpy.dot(v, v))) 
Run Code Online (Sandbox Code Playgroud)

另外 - 向量中tf_idf值的顺序是否重要?它们应该被分类 - 或者对于这个计算是否不重要?

python nlp similarity nltk tf-idf

13
推荐指数
3
解决办法
2万
查看次数

如何识别与主题相关的句子?

我正在做一个项目,要求我对文档进行排序以匹配主题.

例如,我有4个主题,讲座,导师,实验室考试.我有一些句子是:

  1. 讲座很吸引人
  2. 导师非常好,很活跃
  3. 讲座内容太长了2个小时.
  4. 与每周实验室相比,考试似乎太难了.

现在我想把这些句子分成上面的主题,结果应该是:

  • 讲座:2
  • 导师:1
  • 考试:1

我做了研究,我发现的最多指令是使用LDA主题建模.但似乎无法解决我的问题因为我知道LDA支持识别文档中的主题,并且不知道如何手动预选主题.

有人可以帮帮我吗?我坚持这一点.

python nltk

1
推荐指数
1
解决办法
182
查看次数

标签 统计

python ×3

nltk ×2

tf-idf ×2

document ×1

n-gram ×1

nlp ×1

similarity ×1

vsm ×1