在 Gensim 中使用标记文档和循环
Using Tagged Document and Loops in Gensim
我正在尝试使用 Doc2Vec
获取大约 5,000 份法律摘要的语料库的文档相似度值(我知道语料库可能有点小,但这是一个证明一个包含大约 15,000 个摘要的更大语料库的概念项目,我将不得不稍后编译)。作为 Python 的新手,我最初 运行 在为文件夹中收集的 5,000 个文本文件创建预处理函数时遇到了一些麻烦,但我设法创建了一个。
麻烦的是,当我使用 Tagged Document
功能为每个文档(“单词”)分配一个“标签”时,只有来自 5,000 个文档之一的文本(.txt
文件)用于“单词”部分,并重复,同时使用每个文档的标签(文件名)。基本上,一份简报被标记了 5,000 次,每次都有不同的标签,而我显然想要 5,000 份简报,每份都有其文件名的唯一标签。
下面是我使用的代码。我想知道是否有人可以帮我弄清楚我哪里出了问题。我不知道它是否是 Tagged Document
功能,或者它是否是我创建的循环的问题 - 也许我需要另一个循环,或者我让循环读取文件路径的方式有问题?我对 Python 比较陌生,所以这是完全可能的。
谢谢!
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)
在您的代码末尾,len(briefs)
是否符合您的预期?查看 briefs[0]
或 briefs[-1]
之类的项目是否显示了您期望的单个 TaggedDocument
项目?
您可能不想要两个嵌套的 for … in
循环 - 一个遍历所有简报以打开文件,另一个对每个简报 再次 进行在所有内裤上为它们分配 所有 相同的 tokens
值。
尝试更改您的台词:
tagged_data = [TaggedDocument(tokens, [brief]) for brief in BriefList]
briefs.append(tagged_data)
...一次简单地构建并附加一个 TaggedDocument
...
briefs.append(TaggedDocument(tokens, [brief])
我正在尝试使用 Doc2Vec
获取大约 5,000 份法律摘要的语料库的文档相似度值(我知道语料库可能有点小,但这是一个证明一个包含大约 15,000 个摘要的更大语料库的概念项目,我将不得不稍后编译)。作为 Python 的新手,我最初 运行 在为文件夹中收集的 5,000 个文本文件创建预处理函数时遇到了一些麻烦,但我设法创建了一个。
麻烦的是,当我使用 Tagged Document
功能为每个文档(“单词”)分配一个“标签”时,只有来自 5,000 个文档之一的文本(.txt
文件)用于“单词”部分,并重复,同时使用每个文档的标签(文件名)。基本上,一份简报被标记了 5,000 次,每次都有不同的标签,而我显然想要 5,000 份简报,每份都有其文件名的唯一标签。
下面是我使用的代码。我想知道是否有人可以帮我弄清楚我哪里出了问题。我不知道它是否是 Tagged Document
功能,或者它是否是我创建的循环的问题 - 也许我需要另一个循环,或者我让循环读取文件路径的方式有问题?我对 Python 比较陌生,所以这是完全可能的。
谢谢!
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)
在您的代码末尾,len(briefs)
是否符合您的预期?查看 briefs[0]
或 briefs[-1]
之类的项目是否显示了您期望的单个 TaggedDocument
项目?
您可能不想要两个嵌套的 for … in
循环 - 一个遍历所有简报以打开文件,另一个对每个简报 再次 进行在所有内裤上为它们分配 所有 相同的 tokens
值。
尝试更改您的台词:
tagged_data = [TaggedDocument(tokens, [brief]) for brief in BriefList]
briefs.append(tagged_data)
...一次简单地构建并附加一个 TaggedDocument
...
briefs.append(TaggedDocument(tokens, [brief])