用自己网站做淘宝客,深圳上市公司一览表,服务佳的小企业网站建设,手机软件商店下载使用Spacy python库做中文词性和词频分析#xff0c;读取word并给出其中每个词的词频和词性#xff0c;写入excel表。
1、为什么选择Spacy库 相比与NLTK这个库更快和更准 2、模型比较 zh_core_web_trf模型#xff0c;模型大#xff0c;准确性高。 需要确保你的Spacy版本是…使用Spacy python库做中文词性和词频分析读取word并给出其中每个词的词频和词性写入excel表。
1、为什么选择Spacy库 相比与NLTK这个库更快和更准 2、模型比较 zh_core_web_trf模型模型大准确性高。 需要确保你的Spacy版本是最新的因为zh_core_web_trf是一个基于transformer的模型因为它包含了整个transformer模型。下载和加载这个模型可能需要一些时间并且会占用较多的内存。
传统的模型如zh_core_web_sm模型小准确性低
3、常见问题 模型下不下来,直接去github下载whl或者在csdn上下载我的资源。
cd /your_path
pip install xx.whl4、代码 代码如下
import pandas as pd
from docx import Document
import spacy# 加载Spacy的中文模型
nlp spacy.load(zh_core_web_trf)# 读取Word文档
path_rrxx.docx
doc Document(path_r)
text .join([paragraph.text for paragraph in doc.paragraphs])# 分析文本
tokens nlp(text)
word_freq {}for token in tokens:if token.text in word_freq:word_freq[token.text] 1else:word_freq[token.text] 1# 提取词性和词频
results []
for token in tokens:results.append([token.text, token.pos_, word_freq[token.text]])# 转换为DataFrame
df pd.DataFrame(results, columns[词, 词性, 词频])# 写入Excel
df.to_excel(analysis_results.xlsx, indexFalse)在没有GPU的情况下模型推理巨慢无比可以考虑使用以下的多进程方式其中nlp spacy.load(‘zh_core_web_trf’)可能无法pickle需要放入analyze_text(paragraph_text, nlp)函数内部。
import pandas as pd
from docx import Document
import spacy
from multiprocessing import Pool, cpu_count
from functools import partial
import itertools# 加载Spacy的中文模型
nlp spacy.load(zh_core_web_trf)def analyze_text(paragraph_text, nlp):# 分析文本段落tokens nlp(paragraph_text)word_freq {}for token in tokens:if token.text in word_freq:word_freq[token.text] 1else:word_freq[token.text] 1# 提取词性和词频results []for token in tokens:results.append([token.text, token.pos_, word_freq[token.text]])return resultsdef main():# 读取Word文档path_r rC:\Users\xueshifeng\Desktop\合并.docxtry:doc Document(path_r)except Exception as e:print(fError occurred while loading the document: {e})returntext .join([paragraph.text for paragraph in doc.paragraphs])# 分割文本到段落级别考虑实际情况调整paragraphs [p for p in text.split(
) if p.strip()]# 创建一个进程池with Pool(processescpu_count()) as pool:# 为每个进程创建一个新的nlp实例with nlp.disable_pipes(*nlp.pipe_names):analyze_text_with_nlp partial(analyze_text, nlpnlp.clone())results pool.map(analyze_text_with_nlp, paragraphs)# 直接构建DataFrameflat_results list(itertools.chain.from_iterable(results))df pd.DataFrame(flat_results, columns[词, 词性, 词频])# 写入Exceldf.to_excel(analysis_results.xlsx, indexFalse)if __name__ __main__:main()