背景简介: 我有一些自动转录的讲座文本数据,我想比较它们的内容相似度(例如他们在谈论什么),以进行聚类和推荐。我对NLP非常新手。
数据: 我正在使用的数据可在此处获取。对于所有懒人
clone https://github.com/TMorville/transcribed_data
这是一个将其放入df中的代码片段:
import os, json
import pandas as pd
from pandas.io.json import json_normalize
def td_to_df():
path_to_json = '#FILL OUT PATH'
json_files = [pos_json for pos_json in os.listdir(path_to_json) if pos_json.endswith('td.json')]
tddata = pd.DataFrame(columns=['trans', 'confidence'])
for index, js in enumerate(json_files):
with open(os.path.join(path_to_json, js)) as json_file:
json_text = json_normalize(json.load(json_file))
tddata['trans'].loc[index] = str(json_text['trans'][0])
tddata['confidence'].loc[index] = str(json_text['confidence'][0])
return tddata
方法:目前,我只使用了spaCy软件包来进行“开箱即用”的相似度评估。我只需要将nlp模型应用于整个文本集合,并将其与其他所有文本进行比较。
def similarity_get():
tddata = td_to_df()
nlp = spacy.load('en_core_web_lg')
baseline = nlp(tddata.trans[0])
for text in tddata.trans:
print (baseline.similarity(nlp(text)))
问题: 几乎所有的相似性都大于0.95。这与基线更多或更少无关。现在,考虑到缺乏预处理,这可能并不令人惊讶。
解决方案策略: 根据此帖子中的建议,我想要做以下几件事(尽可能使用spaCy):1)去除停用词。2)去除最常见的单词。3)合并单词对。4)可能在spaCy之外使用Doc2Vec。
问题: 上述方案是否可行?如果不是,还缺少什么?如果是,使用nlp = spacy.load('en_core_web_lg')
加载的预训练模型已经实现了多少?
我似乎找不到说明这些模型确切操作及如何配置它的文档。一个快速Google搜索没有结果,即使是非常好的API文档也似乎无法提供帮助。也许我找错地方了?
nlp = spacy.load('en_core_web_lg')
,你可以加载将用于doc2vec的单词向量。 - Ali Zarezade