【发布时间】:2021-09-26 20:21:24
【问题描述】:
我正在尝试使用 Doc2Vec 获取大约 5,000 个法律摘要的语料库的文档相似性值(我认识到语料库可能有点小,但这是一个概念验证项目一个包含大约 15,000 条简报的更大语料库,稍后我将进行编译)。
基本上,到目前为止,模型创建过程中的所有其他组件都进行得相对较好——我的每个简报都在一个较大文件夹中的文本文件中,所以我在我的脚本中使用glob.glob 编译了它们——但我'我遇到了一个标记化问题。困难在于,由于这些文件是法律摘要,它们包含我想保留的数字,而且我用来帮助我编写代码的许多指南都使用 Gensim 的简单预处理,我相信它可以消除数字语料库,与 TaggedDocument 功能相结合。但是,我希望尽可能少地对文本进行预处理。
下面是我使用的代码,我尝试将 simple_preprocess 替换为 genism.utils.tokenize,但是当我这样做时,我得到的生成器对象在我的最终 Doc2Vec 模型中似乎不可用,并且我实际上无法看到语料库的外观。当我尝试使用其他标记器时,例如 nltk,我不知道如何将其放入 TaggedDocument 组件中。
brief_corpus = []
for brief_filename in brief_filenames:
with codecs.open(brief_filename, "r", "utf-8") as brief_file:
brief_corpus.append(
gensim.models.doc2vec.TaggedDocument(
gensim.utils.simple_preprocess(
brief_file.read()),
["{}".format(brief_filename)])) #tagging each brief with its filename
如果有人能提供任何建议,我将不胜感激,这将帮助我将仅在空格上分隔且不会消除任何数字的标记器与 TaggedDocument 功能结合起来。谢谢!
更新:我能够为一些基本的标记化创建基本代码(我确实计划进一步完善它),而无需求助于 Gensim 的 simple_preprocessing 功能。但是,我在使用 TaggedDocument 功能时遇到了困难(再次!)——但这一次,标签(我想成为每个简报的文件名)与标记化的文档不匹配。基本上,每个文档都有一个标签,但它不是正确的。
谁能告诉我下面的新代码哪里出错了?谢谢!
briefs = []
BriefList = [p for p in os.listdir(FILEPATH) if p.endswith('.txt')]
for brief in BriefList:
str = open(FILEPATH + brief,'r').read()
tokens = re.findall(r"[\w']+|[.,!?;]", str)
tagged_data = [TaggedDocument(tokens, [brief]) for brief in BriefList]
briefs.append(tagged_data)
【问题讨论】:
标签: python tokenize word-embedding doc2vec