我需要比较存储在数据库中的文档,并得出0到1之间的相似性得分.
我需要使用的方法必须非常简单.实现n-gram的vanilla版本(可以定义要使用的克数),以及tf-idf和余弦相似度的简单实现.
有没有可以做到这一点的程序?或者我应该从头开始写这个?
我正在尝试使用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值的顺序是否重要?它们应该被分类 - 或者对于这个计算是否不重要?
我正在做一个项目,要求我对文档进行排序以匹配主题.
例如,我有4个主题,讲座,导师,实验室和考试.我有一些句子是:
现在我想把这些句子分成上面的主题,结果应该是:
我做了研究,我发现的最多指令是使用LDA主题建模.但似乎无法解决我的问题因为我知道LDA支持识别文档中的主题,并且不知道如何手动预选主题.
有人可以帮帮我吗?我坚持这一点.