以下内容都是在工作中的一些小实践,代码部分是参考网上的已有的然后再自行根据情况修改过的。记载主要是想以后用的时候可以更方便的直接拿过来用。
注:工作所需,程序是在knime这个数据挖掘软件的python下运行的,结果是截图过来的,可能模糊,可以自己实践代码。
文章内容: jieba分词(包括分词、关键词提取、词性标记)、word2vec、LDA、Kmeans四大模块算法的理论归纳及简单实现代码与果。
完成时间:1个星期左右时间。 其中,python部分2天左右,knime部分花费时间较长。
所用软件:python, Knime(python脚本完成)。
所用主要模块:NLTK、 Sklearn、pandas、Scipy、numpy、gensim(Word2vec部分),jieba。
遇到的主要问题:KNIME软件python脚本里中文编码问题、KNIME运行非常慢、KNIME的文件流入流出端还不是很熟练、KNIME其他数据预处理结点还不是很熟练。
后续计划:首先,因为之前时间并不多,所以还未实现其他文本挖掘算法,比如,SVM、 随机森林、kNN、CNN(类似其他神经网络算法)、 NLP其他功能、朴素贝叶斯等,这些算法在python里很好实现,在KNIME里需要改进运行效率。其次,希望可以对knime的python脚本运行效率作以改进,对KNIME数据流入流出数据库作以实践与熟练,还有就是对模型参数的多次训练,比如,本文实践的kmeans算法,参数K目前设置的是3,聚类预测准确率也就在60%左右,模型还不是很好,需要时间再调参训练。最后,希望对knime其他挖掘软件及结点作以实践,比如weka(这个软件比较熟悉,希望后面多了解)、R、matlab等。jieba分词:
词性标记代码部分:
# Copy input to output
output_table_1 = input_table_1.copy()
output_table_2 = input_table_2.copy()
#!/usr/bin/python
import sys
#reload(sys)
#sys.setdefaultencoding('utf-8')
import jieba
import jieba.posseg as pseg #主要用jieba里的pseg做词性标记
import jieba.analyse
# 对句子进行分词
def seg_sentence(sentence):
sentence_seged = pseg.cut(sentence.strip())
stopwords = []
for line in output_table_2.values: #遍历停用词DataFrame
line[0]
stopwords.append(line[0])
outstr = ''
for word in sentence_seged:
if word not in stopwords: #去除停用词
if word!='\t':
for word1, flag in
sentence_seged: #遍历分词及分词词性
#print'%s %s' % (word1,
flag)
outstr
+=word1+'\t'+flag+'\n'
else:
outstr += " "
return outstr
#out_table=DataFrame()
for line in output_table_1.values:
line_seg = seg_sentence(line[0]) # 这里的返回值是字符串
print line_seg
#output_table_1['fenci']=line_seg
词性标记脚本结果:
特征词提取代码部分(提取了权重top100的词):
# Copy input to output
output_table = input_table.copy()
#!/usr/bin/python
import sys
import pandas
from pandas import DataFrame
#reload(sys)
#s