脚本后续更新及迭代将由kkitDeploy项目代替 https://github.com/luckman666/kkitdeploy_server 请大家持续关注kkitDeploy
波哥的麦克风线依然没到。。。
我们都知道ELK用来处理分析一些非结构化数据,比如日志分析、中文检索之类的。今天波哥就花了点时间来写个小例子,还是五十行的代码来给大家简单演示一下分词及索引。
并且这个例子可以结合我们上一个聊天机器人的例子来做语句分析。比如机器人说了一句话,通过这个例子来过滤其语句信息,然后匹配相应的敏感词,触发敏感词之后我们反馈什么信息给对方。这样一个简单的分词匹配就实现了!
那么我们来看一下效果:
输入几个关键字,程序自动判断出自哪个诗人的诗句。
这里面我们用了jieba,nltk两个python模块!
jieba是著名的python中文分词模块,什么叫分词?
简单说一下吧:
比如:你干啥去了?
这句话正确分词应该是:你,干啥,去了。
而不能分成:你干,啥去,了。
大概这个意思吧!分词嘛,一句话分成多个有意义的词组。
但是这里面学问可多了去了。我只是简单介绍一下。
nltk所有自然语言处理方面的开发者都会接触到的一个模块。
这里呢我们选用 NLTK 提供的贝叶斯分类器模型做训练。当然NLTK中有很多模型供我们使用,这里我们仅选用了贝叶斯分类器来做实例的演示:
先上仓库位置:
https://github.com/luckman666/jiebaAndNltk.git
再上代码:
1 import jieba 2 from nltk.classify import NaiveBayesClassifier 3 4 # 需要提前把李白的诗收集一下,放在libai.txt文本中。 5 text1 = open(r"libai.txt", "rb").read() 6 list1 = jieba.cut(text1) 7 result1 = " ".join(list1) 8 # 需要提前把杜甫的诗收集一下,放在dufu.txt文本中。 9 text2 = open(r"dufu.txt", "rb").read() 10 list2 = jieba.cut(text2) 11 result2 = " ".join(list2) 12 13 # 数据准备 14 libai = result1 15 dufu = result2 16 17 18 # 特征提取 19 def word_feats(words): 20 return dict([(word, True) for word in words]) 21 22 23 libai_features = [(word_feats(lb), 'lb') for lb in libai] 24 dufu_features = [(word_feats(df), 'df') for df in dufu] 25 train_set = libai_features + dufu_features 26 # 训练决策 27 classifier = NaiveBayesClassifier.train(train_set) 28 29 # 分析测试 30 sentence = input("请输入一句你喜欢的诗:") 31 print("\n") 32 seg_list = jieba.cut(sentence) 33 result1 = " ".join(seg_list) 34 words = result1.split(" ") 35 36 # 统计结果 37 38 39 lb = 0 40 df = 0 41 for word in words: 42 classResult = classifier.classify(word_feats(word)) 43 if classResult == 'lb': 44 lb = lb + 1 45 if classResult == 'df': 46 df = df + 1 47 48 # 呈现比例 49 x = float(str(float(lb) / len(words))) 50 y = float(str(float(df) / len(words))) 51 print('李白的可能性:%.2f%%' % (x * 100)) 52 print('杜甫的可能性:%.2f%%' % (y * 100))
这期小脚本可能稍微深入了一点点,对于自然语言及分词是什么、如何使用等问题我们可以结合上面的小脚本再查找一些资料来理解一下就好了。
其实编程只是一个工具,代码其实非常简单,波哥的脚本就50行。这50行代码我们只干了两件事,数据的输入和输出。至于后面对数据的分析,处理等等一系列工作我们并没有涉及到。而那些内容就是当下最火的算法、深度学习、人工智能等等方向的核心领域了。感兴趣的朋友可以去学习探索一下!
今天到这了,觉得不错记得帮波哥转发分享哦!