python jieba分词保存(定义和去掉自定义的词语)一个就够了

本文介绍了一款文本统计工具,该工具能够读取指定文件夹内的TXT文件,并统计其中的词汇,同时支持去除停用词及自定义词汇。程序利用jieba分词库实现了中文文本的分词处理,并能将结果输出到指定文件夹。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个只是在以列表形式的状况下对数据进行存储
可以增添和完善其他功能,有空更新
#这个程序的作用可以把源程序文件夹里面的txt文件出现的词语统计到新文件夹里,可以去掉stopwords里的词,也可以自己添加新词

# coding = utf-8
# author:A_Kang

#这个程序的作用可以把源程序文件夹里面的txt文件出现的词语统计到新文件夹里,可以去掉stopwords里的词,也可以自己添加新词

import os
import math
import jieba
from jieba import analyse

def list_dir(filepath):# 获得当前文件夹下所有文件名
	dir_names=os.listdir(filepath) #function:返回指定路径下的文件和文件夹列表。
	dir_names=os.walk(filepath) #输出在文件夹中的文件名通过在树中游走,向上或者向下。
	return dir_names #返回遍历的文件

def Num_in_set(tf_dic):
	global wordNum_in_set # 准备将此篇文献中的词,导入到词出现总数文档中
	for term in tf_dic:
		if term in wordNum_in_set:
			wordNum_in_set[term]+=1
		else:
			wordNum_in_set[term]=1

def dic_fw(a_dic,file,dicname):
	fw_path=dicname+'-result\\'+file.split('\\')[-3]+'\\'+file.split('\\')[-2]+'\\'
 
	if os.path.exists(fw_path)==False:
		os.makedirs(fw_path) 
 
	if dicname=='tj':
		fw_path=fw_path+file.split('\\')[-1].replace('.txt','-'+dicname+'.txt') # 写入文档位置
		fw=open(fw_path,'w+',encoding='utf-8')
		for term in a_dic:
			fw.write(term+'\n')
			print(term+'\n') #计算出tj值
	
	if dicname=='tj_idf':
		fw_path=fw_path+file.split('\\')[-1].replace('-tj.txt','-'+dicname+'.txt') # 写入文档位置
		fw=open(fw_path,'w+',encoding='utf-8')
		for term in a_dic:
			fw.write(term[0]+'\t'+str(term[1])+'\n')
			print(term[0]+'\t'+str(term[1]/max_num)) #计算出tf值
	fw.close()

def stopwordslist(filepath):
    stopwords = [line.strip() for line in open(filepath,'r',encoding='utf-8').readlines()]
    return stopwords

def idf_write():
	global wordNum_in_set
	wordNum_in_set=sorted(wordNum_in_set.items(),key=lambda item:item[1])
	with open('idf.txt','w+',encoding='utf-8') as idf:
		for term in wordNum_in_set:
			idf.write(term[0]+'\t'+str(term[1])+'\n')
	print('词出现次数写入完成---idf.txt')
 
def get_Doc_path_lists(filepath): # 获取文献地址,返回列表
	filelists=[]
	dir_names=list_dir(filepath)
	for root,dirs,files in dir_names:
		for file in files:
			if '.txt' in file: 
				print(root+'\\'+file)
				filelists.append(root+'\\'+file) # 加地址	
	return filelists 

def main():
    #jieba.analyse.set_stop_words('s.txt')
    jieba.load_userdict('w.txt')
    files=get_Doc_path_lists(filepath)
    Doc_Num=len(files)  #文献总数
    tj_dic={}
    print(files)
    stop=stopwordslist(stop_wordspath)
    for file in files:
        with open(file,"r",encoding='gbk') as f:
            wenben=f.read()
            wenben_list=jieba.lcut(wenben)
            for word in wenben_list:
                if word in stop:
                    wenben_list.remove(word)
            print(wenben_list)
            #for i in wenben_list:
            #    tj_dic[i[0]]+=1
            #print(tj_dic)
            #dic_fw(tj_dic,file,'tj')
            dic_fw(wenben_list,file,'tj')
            print(file+':写入完成!')


global filepath # 根地址,可改
filepath=r"E:\train\jieba1\jieba1\sourse"
 
global stopword_list # 停用词表
stopword_list=[]
 
global wordNum_in_set # 记录出现过某词的文档数
wordNum_in_set={}


global stop_wordspath
stop_wordspath=r"E:\train\jieba1\jieba1\s.txt"

if __name__=='__main__':
	main()  
### 使用 Jieba 分词在 VB 中去除停用词 尽管 `Jieba` 是种主要用于 Python 的中文分词工具,但在其他编程语言中实现类似的分词功能也是可行的。对于 Visual Basic (VB),可以借助调用外部库或者手动编写逻辑来模拟分词过程并去除停用词。 以下是基于 Jieba 思想的一个简单示例代码,在 VB 中展示如何通过自定义方式完成分词以及去除停用词的功能: ```vb Imports System.IO Module Module1 Sub Main() Dim text As String = "这是一个测试文本,用于演示如何在VB中进行分词去除非必要的词语。" Dim words As List(Of String) = Tokenize(text) Dim result As List(Of String) = RemoveStopWords(words, LoadStopWords()) Console.WriteLine("分词结果:") For Each word In result Console.WriteLine(word) Next End Sub ' 模拟分词函数 Function Tokenize(ByVal inputText As String) As List(Of String) ' 这里可以用简单的正则表达式或者其他方法分割字符串作为替代方案 Return New List(Of String)(inputText.Split(New Char() {" ", ".", ",", "。", ",", ":", ";", "!", "?"c})) End Function ' 加载停用词列表 Function LoadStopWords() As HashSet(Of String) Dim stopWords As New HashSet(Of String) From { "是", "这", "一个", "用于", "在", "中的", "", "非必要" ' 自定义停用词表 } Return stopWords End Function ' 去除停用词 Function RemoveStopWords(ByVal tokens As List(Of String), ByVal stopWords As HashSet(Of String)) As List(Of String) Dim filteredTokens As New List(Of String)() For Each token In tokens If Not stopWords.Contains(token.Trim()) AndAlso Not String.IsNullOrEmpty(token.Trim()) Then filteredTokens.Add(token.Trim()) End If Next Return filteredTokens End Function End Module ``` 上述代码实现了以下功能: - **Tokenize 函数**:模仿分词的过程,这里采用简单的字符拆分代替复杂的自然语言处理技术[^3]。 - **LoadStopWords 函数**:加载预定义的停用词集合。 - **RemoveStopWords 函数**:过滤掉输入文本中的停用词。 需要注意的是,真正的分词通常依赖于更高级的语言模型或机器学习算法,而不仅仅是简单的字符串切分。如果需要更高精度的结果,则可能需要引入第三方 API 或者将数据传递给支持多语言环境的服务端程序执行实际的分词工作[^4]。 #### 注意事项 由于 VB 并未原生提供像 Jieba 那样的高效中文分词器,因此建议考虑跨平台解决方案,比如利用 RESTful Web Service 调用远程服务来进行复杂任务处理[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大不怪将军

如果帮助到你,我很开心

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值