dictionary = corpora.Dictionary(texts)对texts的要求
时间: 2023-12-03 12:44:16 浏览: 107
`corpora.Dictionary(texts)`函数是用来创建一个字典(Dictionary)对象的,它接受一个文本列表(texts)作为输入。文本列表是一个列表,其中每个元素都是一个表示文档的列表,列表中的每个元素是一个单词或者是一个词的ID。因此,对于`corpora.Dictionary(texts)`函数来说,texts的要求是一个二维列表,每个内部列表代表一个文档,内部列表中的元素可以是单词或者是单词的ID。例如:
```
texts = [["apple", "banana", "orange"], ["car", "bike", "bus"]]
dictionary = corpora.Dictionary(texts)
```
在上面的例子中,`texts`是一个包含两个文档的列表,第一个文档由三个单词组成,第二个文档由三个单词组成。`corpora.Dictionary(texts)`函数将这些单词转换为唯一的整数ID,并创建一个字典对象,该对象包含一个从单词到ID的映射和一个从ID到单词的映射。
相关问题
dictionary = corpora.Dictionary([doc.split() for word in texts])举一个texts的例子
假设我们有一个包含两个文本的列表,例如:
```
texts = ["Hello world, this is a sample text", "I am learning natural language processing"]
```
那么我们可以使用列表推导式将这两个文本分别切割成单词,并作为一个列表传递给语料库的字典构造函数。完整的代码如下:
```
from gensim import corpora
texts = ["Hello world, this is a sample text", "I am learning natural language processing"]
dictionary = corpora.Dictionary([text.split() for text in texts])
```
这将创建一个名为 `dictionary` 的字典对象,其中包含两个文本中所有不重复单词的映射关系。
Add comments to my code below and return,import pandas as pd import jieba from gensim import corpora, models, similarities # 读取Excel表格数据 df = pd.read_excel(r'D:\pycharm_project\excel_column_similar\cosmic核减率分析\excel_test_clean.xlsx') # 使用jieba进行分词,并去除停用词 stop_words = {'的', '了', '是', '我', '你', '他', '她', '(', ')'} texts = [] for text in df['子过程描述']: words = [word for word in jieba.cut(text) if word not in stop_words] texts.append(words) print(texts) # 构建词典和文档向量 dictionary = corpora.Dictionary(texts) corpus = [dictionary.doc2bow(text) for text in texts] print(corpus) # 计算TF-IDF特征向量 tfidf = models.TfidfModel(corpus) corpus_tfidf = tfidf[corpus] print(tfidf) print(corpus_tfidf) # 计算相似度 index = similarities.MatrixSimilarity(corpus_tfidf) similarity_matrix = index[corpus_tfidf] print(index) print(similarity_matrix.shape) # 标注相似度大于0.75的单元格 for i in range(similarity_matrix.shape[0]): for j in range(i + 1, similarity_matrix.shape[1]): if similarity_matrix[i, j] > 0.75: df.at[i, '子过程描述'] = str(df.at[i, '子过程描述']) + ' (' + str(round(similarity_matrix[i, j], 2)) + ')' df.at[j, '子过程描述'] = str(df.at[j, '子过程描述']) + ' (' + str(round(similarity_matrix[i, j], 2)) + ')' # 保存结果到Excel表格 df.to_excel(r'example_similarity.xlsx', index=False)
下面是代码的注释:
```python
import pandas as pd
import jieba
from gensim import corpora, models, similarities
# 读取Excel表格数据
df = pd.read_excel(r'D:\pycharm_project\excel_column_similar\cosmic核减率分析\excel_test_clean.xlsx')
# 使用jieba进行分词,并去除停用词
stop_words = {'的', '了', '是', '我', '你', '他', '她', '(', ')'}
texts = []
for text in df['子过程描述']:
words = [word for word in jieba.cut(text) if word not in stop_words]
texts.append(words)
print(texts)
# 构建词典和文档向量
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]
print(corpus)
# 计算TF-IDF特征向量
tfidf = models.TfidfModel(corpus)
corpus_tfidf = tfidf[corpus]
print(tfidf)
print(corpus_tfidf)
# 计算相似度
index = similarities.MatrixSimilarity(corpus_tfidf)
similarity_matrix = index[corpus_tfidf]
print(index)
print(similarity_matrix.shape)
# 标注相似度大于0.75的单元格
for i in range(similarity_matrix.shape[0]):
for j in range(i + 1, similarity_matrix.shape[1]):
if similarity_matrix[i, j] > 0.75:
df.at[i, '子过程描述'] = str(df.at[i, '子过程描述']) + ' (' + str(round(similarity_matrix[i, j], 2)) + ')'
df.at[j, '子过程描述'] = str(df.at[j, '子过程描述']) + ' (' + str(round(similarity_matrix[i, j], 2)) + ')'
# 保存结果到Excel表格
df.to_excel(r'example_similarity.xlsx', index=False)
```
注释中解释了每个步骤的作用:
1. 读取Excel表格数据,保存到dataframe对象df中。
2. 使用jieba对子过程描述列进行分词,并去除停用词。
3. 使用gensim中的Dictionary类构建词典,并将分词后的文本转换为文档向量。
4. 使用TF-IDF模型计算词语的权重,并得到TF-IDF特征向量。
5. 使用MatrixSimilarity计算文本之间的相似度,并保存到相似度矩阵中。
6. 遍历相似度矩阵,将相似度大于0.75的单元格标注出来。
7. 将结果保存到新的Excel表格中。
阅读全文