如何使用我的弱模型通过python中单词的相似性过滤一堆未标记的文章数据?

Posted

技术标签:

【中文标题】如何使用我的弱模型通过python中单词的相似性过滤一堆未标记的文章数据?【英文标题】:how to filtered a bunch of non-labeled article data using my weak-model by its similarity of word in python? 【发布时间】:2019-04-22 11:27:27 【问题描述】:

我有 9000 个未标记文章的样本,我想将其标记为二元类(0 和 1)

此外,我有 500 个属于正类 (label=1) 的标记样本,而负类 label=0 没有样本。

我知道使用仅在 500 个正样本上训练的模型将 9000 个样本标记为 0 和 1 是不可能的。

所以我想实施一种“相似性”方法,根据 9000 个样本与 500 个正样本的“词相似性”对它们进行分类。为了从9000个数据中提取相似的数据,所以我可以用1标记它。所以9000数据集中的其余数据可以标记为0类。

所以问题是,是否可以过滤它?如果是这样,我如何用与python的单词相似度来过滤它?

谢谢你的回答,我希望我有解决办法:)

【问题讨论】:

这取决于您认为“相似”的数据。您可以构建标记数据的 trie,然后将未标记数据与其进行比较,将与 trie 数据“足够不同”的所有数据标记为 0。 【参考方案1】:

是的,这是可能的。您可以使用 doc2vec(我建议用于 python 的 gensim 库)为您的 500 个肯定文档中的单词构建一个向量空间。使用该表示,可以查询新样本(来自 9000 个样本的样本)和您的语料库数据集(500 个样本)之间的相似性。如果您认为相似度“足够相似”,则可以将其标记为 1。

有关不错的教程和代码,请参阅: https://markroxor.github.io/gensim/static/notebooks/doc2vec-IMDB.html

您可以跳过“预测评估方法” 对您来说最有趣的部分可能是:“密切的文档是否似乎比遥远的文档更相关?”

编辑:回答评论。是的,我前段时间使用过代码(如果我有错误,我记不太清了)。我使用的代码的实现如下。请考虑我使用的是 8 核的机器

def labelize_tweets_ug(tweets,label):
   result = []
   prefix = label
   for i, t in zip(tweets.index, tweets):
       result.append(TaggedDocument(t.split(), [prefix + '_%s' % i]))
   return result

# all_x is a list of tweets
all_x_w2v = labelize_tweets_ug(all_x, 'all')
cores = multiprocessing.cpu_count()


model_ug_cbow = Word2Vec(sg=0, size=100, negative=5, window=2, min_count=2, 
workers=cores, alpha=0.065, min_alpha=0.065)
model_ug_cbow.build_vocab([x.words for x in tqdm(all_x_w2v)])

for epoch in range(30):
    model_ug_cbow.train(utils.shuffle([x.words for x in tqdm(all_x_w2v)]),total_examples=len(all_x_w2v), epochs=1)
    model_ug_cbow.alpha -= 0.002
    model_ug_cbow.min_alpha = model_ug_cbow.alpha

【讨论】:

在训练模型的一部分,在train_model.train(doc_list)上,它会出错,它需要total_examples=x.corpus_count和epochs=x.epochs的参数,当我用train_model应用x时,即 corpus_count 是 100000 并且 epochs 是 5,它会运行但非常慢,并且在过程中间出错。你试过那些代码吗? @thomidhia 我编辑了我的答案以回复您的评论。

以上是关于如何使用我的弱模型通过python中单词的相似性过滤一堆未标记的文章数据?的主要内容,如果未能解决你的问题,请参考以下文章

在python中通过其相似性进行图像聚类

在python中计算单词相似度得分

Python单词短语相似度比较

skip-gram模型

如何使用 word2vec 通过给出 2 个单词来计算相似度距离?

Python Gensim:如何使用 LDA 模型计算文档相似度?