python怎么做词共现统计
时间: 2024-10-13 07:10:20 浏览: 29
在Python中,做词共现统计通常涉及文本分析和处理,常用的数据结构和库有NLTK(Natural Language Toolkit)和scikit-learn。以下是一个简单的步骤:
1. **数据预处理**:首先,你需要读取文本文件,并将其转换成小写的字符串,去除标点符号、数字和其他非字母字符。可以使用`nltk`库的`word_tokenize`函数将文本分割成单词列表。
```python
import nltk
from nltk.tokenize import word_tokenize
with open('text.txt', 'r', encoding='utf-8') as file:
text = file.read().lower()
tokens = word_tokenize(text)
```
2. **分词和去停用词**:接下来,去除常见的无意义词汇(如冠词、介词等),这通常通过使用`nltk.corpus.stopwords`中的停用词列表来完成。
```python
nltk.download('stopwords')
from nltk.corpus import stopwords
stop_words = set(stopwords.words('chinese'))
filtered_tokens = [token for token in tokens if token not in stop_words]
```
3. **构建词频矩阵**:使用`collections.Counter`或`sklearn.feature_extraction.text.CountVectorizer`创建一个词频矩阵,每个词都是行,文档是列,值表示词在文档中的频率。
```python
from collections import Counter
freq_matrix = Counter(filtered_tokens)
# 或者使用sklearn:
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer(analyzer=lambda x: x.lower().split())
X = vectorizer.fit_transform([' '.join(filtered_tokens)])
```
4. **计算共现矩阵**:为了得到词共现矩阵,你可以对词频矩阵进行操作,比如计算每个词与其他词同时出现的次数。
```python
co_occurrence_matrix = freq_matrix.items() # 对于简单情况
# 或者遍历词频矩阵,统计每对词同时出现的次数
```
5. **可视化结果**:如果需要,可以使用matplotlib或seaborn库绘制词共现网络图,展示词语之间的关联度。
以上就是一个基础的词共现统计流程。请注意,实际应用中可能还需要进行更复杂的数据清洗和调整,例如考虑词干提取或TF-IDF权重等。
阅读全文