高频词共现矩阵python代码
时间: 2023-06-15 14:02:24 浏览: 295
高光谱的灰度共生矩阵获取代码
高频词共现矩阵是指将一篇文本中出现频率较高的词语进行统计,并计算这些词语之间出现的共现次数,得到一个共现矩阵。这个共现矩阵可以作为文本的特征表示,用于文本分类、聚类等应用。
以下是一个使用Python生成高频词共现矩阵的代码示例:
1. 首先导入必要的库:
```
import numpy as np
import pandas as pd
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
```
2. 定义生成共现矩阵的函数:
```
def cooc_matrix(text, num_words=1000, window_size=5):
# 分词
tokens = word_tokenize(text.lower())
# 去掉停用词
stop_words = set(stopwords.words('english'))
tokens = [token for token in tokens if token not in stop_words]
# 统计词语频率
word_freq = pd.Series(tokens).value_counts()[:num_words]
# 取出频率前num_words的词语
words = word_freq.index.tolist()
# 初始化共现矩阵
cooc = np.zeros((num_words, num_words))
# 遍历每个词语
for i, word in enumerate(words):
# 遍历当前词语周围的词语
for j in range(i - window_size, i + window_size):
# 如果词语在共现窗口内并且不是当前词语本身
if j >= 0 and j < len(words) and words[j] != word:
# 更新共现矩阵
cooc[i, j] = cooc[j, i] = tokens.count(word + ' ' + words[j])
return cooc, words
```
3. 调用函数生成共现矩阵并进行演示:
```
# 读入文本
text = open('sample.txt').read()
# 生成共现矩阵
cooc, words = cooc_matrix(text)
# 打印共现矩阵和词语列表
print(cooc)
print(words)
```
以上代码可以实现文本的高频词共现矩阵的生成,可以根据不同的需求调整参数来适配不同的文本。
阅读全文