首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用相关语料库和随机语料库计算TF-以色列国防军单词评分

用相关语料库和随机语料库计算TF-以色列国防军单词评分
EN

Stack Overflow用户
提问于 2018-11-12 08:50:07
回答 1查看 172关注 0票数 2

给出一个相关文档语料库(语料库)和一个随机文档语料库( ran_CORPUS ),我想用ran_CORPUS作为基线来计算语料库中所有单词的TF-以色列国防军分数。在我的项目中,ran_CORPUS的文档数量大约是语料库的10倍。

代码语言:javascript
复制
CORPUS = ['this is a relevant document',
          'this one is a relevant text too']
ran_CORPUS = ['the sky is blue',
              'my cat has a furry tail']

我的计划是规范文档,将语料库中的所有文档转换为一个文档(现在,语料库是一个包含一个长字符串元素的列表)。在语料库中,我附加了所有的ran_CORPUS文档。然后,使用sklearn's TfidfTransformer,我将计算语料库(现在由语料库和ran_CORPUS组成)的TF-国防军矩阵。最后,选择该语料库的第一行,为我最初的相关语料库获取TF-以色列国防军的分数。

有谁知道这种方法是否有效,以及是否有一种简单的编码方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-17 01:19:33

当您说“这种方法是否有效”时,我想您的意思是是否将所有相关文档合并到一起并进行向量化,从而提供了一个有效的模型。我想这取决于你打算用那个模型做什么。

我不是个数学家,但我想这就像把所有文档的分数平均在一个向量空间中,所以你已经失去了空间的一些形状,原始的向量空间被单独的相关文档占据。所以,你试着制作一个“大师”或“原型”文件,这意味着代表一个主题?

如果您随后要做一些类似于测试文档的相似性匹配,或者通过距离比较进行分类,那么您可能已经失去了原始文档矢量化的一些微妙之处。总体主题可能比平均数所代表的方面更多。

更具体地说,假设您的原始“相关语料库”有两组文档,因为实际上有两个主要的子主题由不同的重要特性组所代表。稍后,在进行分类时,测试文档可以单独匹配这些集群中的任何一个,因为它们接近两个子主题中的一个。在这种情况下,通过对整个“相关语料库”进行平均处理,您将得到一个在这两个集群之间半途而废的文档,但两者都不能准确地表示。因此,测试演示文稿可能根本不匹配-取决于分类技术。

我认为,如果不对适当的特定身体进行试验,就很难说了。

不管其有效性如何,下面是如何实现的。

注意,您还可以使用TfidfVectorizer将矢量法和Tfidf‘’ing步骤结合在一起。结果并不总是完全相同,但在这种情况下它们是相同的。

此外,您还说对文档进行规范化--通常在输入需要标准化分布(如SVM)的分类算法之前,您可能会对向量表示进行规范化。然而,我认为TF国防军自然会正常化,因此它似乎不会有任何进一步的影响(我可能错了)。

代码语言:javascript
复制
import logging
from sklearn import preprocessing
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer, TfidfTransformer

CORPUS = ['this is a relevant document',
          'this one is a relevant text too']
ran_CORPUS = ['the sky is blue',
              'my cat has a furry tail']

doc_CORPUS = ' '.join([str(x) for x in CORPUS])
ran_CORPUS.append(doc_CORPUS)

count_vect = CountVectorizer()
X_counts = count_vect.fit_transform(ran_CORPUS)
tfidf_transformer = TfidfTransformer()
X_tfidf = tfidf_transformer.fit_transform(X_counts)

logging.debug("\nCount + TdidfTransform \n%s" % X_tfidf.toarray())

# or do it in one pass with TfidfVectorizer
vectorizer = TfidfVectorizer()
X_tfidf = vectorizer.fit_transform(ran_CORPUS)

logging.debug("\nTdidfVectoriser \n%s" % X_tfidf.toarray())

# normalising doesn't achieve much as tfidf is already normalised.
normalizer = preprocessing.Normalizer() 
X_tfidf = normalizer.transform(X_tfidf)
logging.debug("\nNormalised:\n%s" % X_tfidf.toarray())


Count + TdidfTransform 
[[0.52863461 0.         0.         0.         0.         0.40204024
  0.         0.         0.         0.52863461 0.         0.
  0.52863461 0.         0.        ]
 [0.         0.4472136  0.         0.4472136  0.4472136  0.
  0.4472136  0.         0.         0.         0.4472136  0.
  0.         0.         0.        ]
 [0.         0.         0.2643173  0.         0.         0.40204024
  0.         0.2643173  0.52863461 0.         0.         0.2643173
  0.         0.52863461 0.2643173 ]]

TdidfVectoriser 
[[0.52863461 0.         0.         0.         0.         0.40204024
  0.         0.         0.         0.52863461 0.         0.
  0.52863461 0.         0.        ]
 [0.         0.4472136  0.         0.4472136  0.4472136  0.
  0.4472136  0.         0.         0.         0.4472136  0.
  0.         0.         0.        ]
 [0.         0.         0.2643173  0.         0.         0.40204024
  0.         0.2643173  0.52863461 0.         0.         0.2643173
  0.         0.52863461 0.2643173 ]]

Normalised:
[[0.52863461 0.         0.         0.         0.         0.40204024
  0.         0.         0.         0.52863461 0.         0.
  0.52863461 0.         0.        ]
 [0.         0.4472136  0.         0.4472136  0.4472136  0.
  0.4472136  0.         0.         0.         0.4472136  0.
  0.         0.         0.        ]
 [0.         0.         0.2643173  0.         0.         0.40204024
  0.         0.2643173  0.52863461 0.         0.         0.2643173
  0.         0.52863461 0.2643173 ]]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53258578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档