方法见代码注释,python2.x环境下,注意,仅仅适用于unicode乱码情况,不适用于 类似于这种/xae的乱码情况
# -*- coding: utf-8 -*-
#
# from gensim import corpora,models,similarities
# texts = [['human', 'interface', 'computer','interface'],
# ['survey', 'user', 'computer', 'system', 'response', 'time'],
# ['eps', 'user', 'interface', 'system'],
# ['system', 'human', 'system', 'eps'],
# ['user', 'response', 'time'],
# ['trees'],
# ['graph', 'trees'],
# ['graph', 'minors', 'trees'],
# ['graph', 'minors', 'survey']]
# #以上大列表中,每个自列表代表一个文本分词后的结果
# def print_dict(dict):
# for key in dict:
# print type(key),key,str(dict[key]),'\n'
#
#
# dictionary = corpora.Dictionary(texts)#这个应该是分词后的结果,Dictionary用来去重
# corpus = [dictionary.doc2bow(text)for text in texts]
# print_dict(dict(dictionary.items()))
# print("------------------------------------------------")
# print("file numbers=",dictionary.num_docs)
# print("------------------------------------------------")
# #返回的结果中,全部都是list,可以看到,corpus下标是0~8,表示文本数目是9个
# #返回的list中的元祖()中,是(id,在单个文本中出现该word的次数)、
# #而一个list中包含的tuple数量=分词后word数量-重复的word数量
# #举例:['human', 'interface', 'computer','interface']这个文本的
# #分词后word数量是4个,而由于interface重复了一次,所以tuple数量=4-1=3
# # 所以最终对应的corpus[0]输出的list中是3个tuple,而不是4个
# print corpus[0]
# print corpus[1]
# print corpus[2]
# print corpus[3]
# print corpus[4]
# print corpus[5]
# print corpus[6]
# print corpus[7]
# print corpus[8]
# print("--------------------------------------------------")
# lsi=models.LsiModel(corpus)#输入总文本的稀疏矩阵
# print lsi#TfidfModel(num_docs=9, num_nnz=28),num_nnz是每个文件中不重复词个数的和
# corpus_lsi=lsi[corpus]
# query='human science good interface'
# #下面是把询问的问题转化为稀疏向量
# print("--------------------------------------------------")
# vec_bow=dictionary.doc2bow(query.split())
# print vec_bow
# vec_lsi=lsi[vec_bow]
# print vec_lsi#这个结果是把query的词汇中,筛选出属于dictionary的部分,然后分别计算tf-idf值
# print("----------------以下三行代码计算query和候选文本的相似度---------------------------------")
#
#
# index=similarities.MatrixSimilarity(corpus_lsi)#similarities是一个函数名,不要自己卵用
# print "index=",index
# sims=index[vec_lsi]
# print "sims=",sims#输出列表,元素数量=文本数量
# print("---------------------------")
# similarity=list(sims)#输出列表,元素数量=文本数量
# print "similarity=",similarity
# print("----------------以上三行代码计算query和候选文本的相似度----------------------------")
# store_path='/home/appleyuchi/coai_fudan/storefile.txt'
# sim_file=open(store_path,'w')
# for i in similarity:
# sim_file.write(str(i)+'\n')
# sim_file.close()
import jieba
path='/home/appleyuchi/coai_fudan/train/C3-Art/C3-Art0443.txt'
f=open(path)
contents=f.read()
seg_list = jieba.cut(contents,cut_all = True)
list1=list(seg_list)
print("-----------第1种解决办法----------------------------------------")
print ' '.join(list1)
print type(list1)
print("-----------第2种解决办法----------------------------------------")
str_symptom = str(list1).replace('u\'','\'')
print str_symptom.decode('unicode_escape')
数据集是复旦新闻数据集,其他的数据集也是可以的。