在python中使用matplotlib绘制相似性度量



我正在从事使用 tf-idf 度量查找两个句子/文档之间的相似性的项目。

我尝试了以下示例代码:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity  
documents = (
"The sky is blue",
"The sun is bright"
)
tfidf_vectorizer = TfidfVectorizer()
tfidf_matrix = tfidf_vectorizer.fit_transform(documents)
cosine = cosine_similarity(tfidf_matrix[0:1], tfidf_matrix)
print cosine

而两句话的相似之处是

[[ 1.          0.33609693]]

现在我的问题是如何以图形/可视化格式显示相似性。类似于维恩图,其中交集值成为相似性度量或 matplotlib 或任何 python 库中可用的任何其他图。

提前致谢

维恩图最简单的方法是画两个半径rd = 2 * r * (1 - cosine[0][i])中心距离的圆,其中i是您要比较的线索引。如果句子相同,则有d == 0 is True,即两个圆圈相同。如果这两个句子没有任何共同点,你就有d == 2*r is True,所以圆圈是分离的(它们在一点上接触(。

绘制圆圈的代码已经存在于StackOverflow中。

编辑:此方法从代码输出中绘制维恩图:

## import matplotlib for plotting the Venn diagram
import matplotlib.pyplot as plt
## output of your first part
cosine = [[ 1., 0.33609693]]
## set constants
r = 1
d = 2 * r * (1 - cosine[0][1])
## draw circles
circle1=plt.Circle((0, 0), r, alpha=.5)
circle2=plt.Circle((d, 0), r, alpha=.5)
## set axis limits
plt.ylim([-1.1, 1.1])
plt.xlim([-1.1, 1.1 + d])
fig = plt.gcf()
fig.gca().add_artist(circle1)
fig.gca().add_artist(circle2)
## hide axes if you like
# fig.gca().get_xaxis().set_visible(False)
# fig.gca().get_yaxis().set_visible(False)
fig.savefig('venn_diagramm.png')

在绘制圆圈时设置 Alpha 值可使它们显示为半透明。因此,重叠的不透明度是圆的非重叠部分的两倍。

最新更新