微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

句子的欧几里德距离

如何解决句子的欧几里德距离

我有一个包含 1,16,098 个句子和 30,119 个特征的 scipy 稀疏矩阵。 我想计算它们之间的欧氏距离并打印 5 个最相似的句子。

我正在使用 CountVectorizer 方法来构建词汇表并对单词进行编码。

但是我遇到了以下错误。请帮忙。刚开始用python实现NLP。

vectorizer = CountVectorizer(stop_words = 'english')
features = vectorizer.fit_transform(corpus)
print(vectorizer.vocabulary_)

features.shape
(116098,30119)

print(len(vectorizer.vocabulary_))
30119

for i in range(0,116098):  
    for j in features:
        print(euclidean_distances(features[j],i))

IndexError                                Traceback (most recent call last)
<ipython-input-56-528966153c16> in <module>
      1 for i in range(0,116098):
      2     for j in features:
----> 3         print(euclidean_distances(features[j],i))```

~\Anaconda3\lib\site-packages\scipy\sparse\_index.py in __getitem__(self,key)
     33     """
     34     def __getitem__(self,key):
---> 35         row,col = self._validate_indices(key)
     36         # dispatch to specialized methods.
     37         if isinstance(row,INT_TYPES):

~\Anaconda3\lib\site-packages\scipy\sparse\_index.py in _validate_indices(self,key)
    128     def _validate_indices(self,key):
    129         M,N = self.shape
--> 130         row,col = _unpack_index(key)
    131 
    132         if isintlike(row):

~\Anaconda3\lib\site-packages\scipy\sparse\_index.py in _unpack_index(index)
    274         # not work because spmatrix.ndim is always 2.
    275         raise IndexError(
--> 276             'Indexing with sparse matrices is not supported '
    277             'except boolean indexing where matrix and index '
    278             'are equal shapes.')

IndexError: Indexing with sparse matrices is not supported except boolean indexing where matrix and index are equal shapes.

解决方法

CountVectorizer 返回稀疏矩阵。

sklearn CountVectorizer

此实现使用 scipy.sparse.csr_matrix 生成计数的稀疏表示。

您可以将其转换为 numpy 数组以与 euclidean_distance 一起使用。

features = features.toarray()
,

你可能的意思是:

print(euclidean_distances(features[j],features[i]))

wgich 应该没有问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。