根据Gensim Word2Vec,我可以使用gensim包中的word2vec模型来计算2个单词之间的相似度.
例如
trained_model.similarity('woman', 'man')
0.73723527
Run Code Online (Sandbox Code Playgroud)
但是,word2vec模型无法预测句子相似性.我发现在gensim中具有句子相似性的LSI模型,但是,似乎不能与word2vec模型结合.我所拥有的每个句子的语料库长度不是很长(短于10个单词).那么,有没有简单的方法来实现目标?
Word2vec是一个开源工具,用于计算Google提供的单词距离.它可以通过输入单词并根据相似性输出排序的单词列表来使用.例如
输入:
france
Run Code Online (Sandbox Code Playgroud)
输出:
Word Cosine distance
spain 0.678515
belgium 0.665923
netherlands 0.652428
italy 0.633130
switzerland 0.622323
luxembourg 0.610033
portugal 0.577154
russia 0.571507
germany 0.563291
catalonia 0.534176
Run Code Online (Sandbox Code Playgroud)
但是,我需要做的是通过给出2个单词来计算相似距离.如果我给'法国'和'西班牙',我怎么能得到分数0.678515而不通过给'法国'阅读整个单词列表.
我在opencv代码中使用sift算法从图像中获取描述符和关键点.我的代码是
Ptr<IplImage> image;
vector<KeyPoint> keypoints;
OutputArray des;
Feature2D *descriptor_type = new SIFT()
Mat image_mat(image);
(*descriptor_type)(image_mat,noArray(),keypoints,des,false);
Run Code Online (Sandbox Code Playgroud)
在这里,我可以在向量<KeyPoint>中获取图像的关键点.之后,我想得到每个KeyPoint的Octave以获取更多细节.但是,当我为一个图像提供每个关键点八度值时,我想要它似乎很奇怪确认他们是否正确.
for(int i=0;i<keypoints.size();i++)
{
cout<< (keypoints[i].octave) <<endl;
}
9765375
9765375
2621951
8323583
13763071
6488575
12845567
721407
3604991
12321279
9568767
7406079
8585727
4653567
7799295
7799295
5112319
10486271
9961983
6226431
1245951
Run Code Online (Sandbox Code Playgroud)
如果我将SIFT算法改为SURF算法,那就没问题了.
0
0
0
0
0
0
1
0
0
0
0
1
1
1
0
1
1
1
0
0
1
0
Run Code Online (Sandbox Code Playgroud)
所以我想问一下在SIFT算法中Octave值的计算是否在opencv中是正确的?