如何计算主题之间的相关性?

时间:2019-09-20 14:25:58

标签: python correlation text-classification multilabel-classification multiclass-classification

如何计算文本类别之间的相关性? 例如,我有3个文本:

texts = ["Chennai Super Kings won the final 2018 IPL", "Chennai Super Kings Crowned IPL 2018 Champions",
                 "Chennai super kings returns"]

subjects = ["final", "Crowned",
                 "returns"]

因此,每个文本都有一个标签(类)。因此,它很接近文本分类问题。但是我需要计算“差异”的量度。

我可以算出Tfidf并得到矩阵:

from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd

texts = ["Chennai Super Kings won the final 2018 IPL", "Chennai Super Kings Crowned IPL 2018 Champions",
         "Chennai super kings returns"]
tfidf = TfidfVectorizer()
features = tfidf.fit_transform(texts)
res = pd.DataFrame(features.todense(), columns=tfidf.get_feature_names())

        2018    champions   chennai crowned final   ipl kings   returns super   the won
    "final"     0.333407445657484   0.0 0.2589206239570202  0.0 0.4383907244416506  0.333407445657484   0.2589206239570202  0.0 0.2589206239570202  0.4383907244416506  0.4383907244416506
    "Crowned"   0.37095371207541605 0.4877595527309446  0.28807864923451976 0.4877595527309446  0.0 0.37095371207541605 0.28807864923451976 0.0 0.28807864923451976 0.0 0.0
    "returns"   0.0 0.0 0.4128585720620119  0.0 0.0 0.0 0.4128585720620119  0.6990303272568005  0.4128585720620119  0.0 0.0

我需要得到一个分数,该分数将告诉我:  -主题“最终”与“皇冠”相距多少?

我应该使用什么指标?

///////////////////////////////////////////////// ///////////////// 假设您有5个文本:

放学后,卡马尔(Kamal)将女孩带到老房子里。那也很老很脏。到处都是垃圾。窗户被打破,墙壁潮湿。很可怕。 (1) 艾米不喜欢它。墙上有僵尸和骷髅的画。卡玛尔说:“我们将为学校美术比赛拍照。”艾米不喜欢它,但她什么也没说。 (2) “格兰特在哪里?”塔拉问。 “呃,他要买更多的油漆。” Kamal迅速移开视线。塔拉以为他看起来可疑。 “天快黑了,我们现在可以走了吗?”艾米说。她不喜欢僵尸。 (3) 然后,他们听到房间角落的橱柜传来巨响。 “那是什么?”艾米吓坏了。 “我什么也没听到,” Kamal说。东西发出奇怪的声音。 (4) “你什么意思?那里什么都没有!” Kamal试图不笑。突然门突然砰地一声打开,僵尸出现了,大喊着并移动了手臂。艾米尖叫着,遮住了眼睛。 (5)

每个文本都有标签:

第一条文字-学校,房屋,恐怖 第二文字-僵尸,油漆 第三文字-僵尸,黑暗,油漆 第4则文字-杂讯惊恐 第5条文字-僵尸,尖叫着

第一个任务是查找文本之间的相关性。似乎@MarkH已经给了我正确的方向(余弦相似度) 第二项任务是找到标签之间的相关性。您会看到几乎所有标签都是“僵尸”。同样,第三句和第二句有两个相等的标签:“僵尸,油漆”。 假设我们有10000个文本。那么,这些标签描述同一件事的机会有多少,我们可以删除标签(绘画)之一并使用单一1(僵尸)?因此,这就像是对变化的一种贡献。 如果我们移除一些标签,会不会影响太大?我们可以删除/组合一些标签吗?

2 个答案:

答案 0 :(得分:1)

我认为您可以使用余弦相似度,这在这类任务中很常见。

from sklearn.metrics.pairwise import cosine_similarity
msgs_CosSim = pd.DataFrame(cosine_similarity(features, features))

答案 1 :(得分:0)

相关性的概念可以找到特征之间的接近度,但是您说的是要对那些没有意义的类标签执行此操作,如果特征相同,则它们必须具有相同的类标签。请分享您要解决的最终问题。