自然語言處理入門小白從0開始學自然語言處理+學習筆記(一)
- 2020 年 5 月 21 日
- 筆記
1、自然語言處理學習路徑規劃
- 自然語言處理(NLP)開發環境搭建
- 分詞demo(搭建helloworld工程)
- 案例:nlp實現預測天氣冷暖感知度
- —案例需求和數據準備
- —可視化數據分析
- —KNN模型原理及歐式距離計算
- —KNN分類器模型實現
- —利用KNN分類器採訪隨機遊客預測天氣感知度
- —機器學習庫sklearn實現預測天氣冷暖感知度
- 自然語言處理學習總結歸納
2、自然語言處理(NLP)開發環境搭建
- 自然語言處理一般用python語言,java其實也可以,反正每個語言生態都有自己的相關NLP庫
- 開發環境千萬個,蘿蔔青菜給有所愛,這裡給搭建推薦用idea了
- 下載idea //www.jetbrains.com/idea/download/
- 下載python語言插件(File->settings->plugins->marketplace->搜索:python選擇python language那個)
- 有了插件,就可以新建python項目了,先默認新建一個項目,比如:nlp
- 下載idea //www.jetbrains.com/idea/download/
3、分詞demo(搭建helloworld工程)
- 按照國際上的慣例,咱們應該先寫個hello world,體驗一下python(希望大家有python基礎,沒有也沒關係)
- NLP當中有個常用的技術,分詞,咱也不會,用個第三方的試試
- jieba庫是一款優秀的 Python 第三方中文分詞庫jieba 支援三種分詞模式:精確模式、全模式和搜索引擎模式,下面是三種模式的特點。
- 精確模式:試圖將語句最精確的切分,不存在冗餘數據,適合做文本分析
- 全模式:將語句中所有可能是詞的詞語都切分出來,速度很快,但是存在冗餘數據
- 搜索引擎模式:在精確模式的基礎上,對長詞再次進行切分
上程式碼之前得安裝這個分詞包,秒級安裝鏡像pip install jieba -i //pypi.douban.com/simple/
好,上程式碼:
import jieba;
str = "中國是工人階級領導的以工農聯盟為基礎的人民民主專政的社會主義國家";
res = " ".join(jieba.cut(str))
print(res)
運行效果如下:
4、案例:nlp實現預測天氣冷暖感知度
4.1、案例需求及數據準備
上程式碼:
#coding=utf8
'''創建數據源、返回數據集和類標籤'''
def creat_dataset():
datasets = [[8,4,2],[7,1,1],[1,4,4],[3,0,5]]#數據集
labels = ['非常熱','非常熱','一般熱','非常熱']#類標籤
return datasets,labels
if __name__ == '__main__':
datasets,labels = creat_dataset()
print(datasets,'\n',labels)
運行結果:
4.2、數據分析與可視化
上程式碼:
#coding=utf8
import numpy as np
from numpy import *
import matplotlib
import matplotlib.pyplot as plt
'''創建數據源、返回數據集和類標籤'''
def creat_dataset():
datasets = array([[8,4,2],[7,1,1],[1,4,4],[3,0,5]])#數據集
labels = ['非常熱','非常熱','一般熱','非常熱']#類標籤
return datasets,labels
'''可視化數據分析'''
def analyse_data_plot(x,y):
plt.scatter(x,y)
plt.show()
if __name__ == '__main__':
datasets,labels = creat_dataset()
print('數據集:\n',datasets,'\n','類標籤:\n',labels)
'''數據可視化分析'''
analyse_data_plot(datasets[:,0],datasets[:,1])
運行結果:
4.3、演算法模型及原理
KNN模型原理及歐式距離計算
上程式碼:
#coding=utf8
import numpy as np
from numpy import *
import matplotlib
import matplotlib.pyplot as plt
'''創建數據源、返回數據集和類標籤'''
def creat_dataset():
datasets = array([[8,4,2],[7,1,1],[1,4,4],[3,0,5]])#數據集
labels = ['非常熱','非常熱','一般熱','非常熱']#類標籤
return datasets,labels
'''可視化數據分析'''
def analyse_data_plot(x,y):
plt.scatter(x,y)
plt.show()
'''構造KNN分類器'''
#def knn_Classifier(newV,datasets,labels,2):
#1.獲取新的樣本數據
#2.獲取樣本庫的數據
#3.選擇K值
#4.計算樣本數據與樣本庫數據之間的距離
#5.根據距離進行排序
#6.針對K個點,統計各個類別的數量
#7.投票機制,少數服從多數原則
'''歐氏距離計算:d²=(x1-x2)²+(y1-y2)²'''
def ComputerEuclideanDistance(x1,y1,x2,y2):
d = math.sqrt(math.pow((x1-x2),2)+math.pow((y1-y2),2))
return d
'''歐氏距離計算多維度支援'''
def EuclideanDistance(instance1,instance2,length):
d=0
for i in range(length):
d += pow((instance1[i]-instance2[i]),2)
return math.sqrt(d)
if __name__ == '__main__':
#1.創建數據集和類標籤
datasets,labels = creat_dataset()
print('數據集:\n',datasets,'\n','類標籤:\n',labels)
#2.數據可視化分析
#analyse_data_plot(datasets[:,0],datasets[:,1])
#3.1.歐式距離計算
d = ComputerEuclideanDistance(2,4,8,2)
print(d)
#3.2.歐式距離計算
d2 = EuclideanDistance([2,4],[8,2],2)
print(d2)
#3.3.歐式距離計算,可支援多維
d3 = EuclideanDistance([2,4,9],[8,2,5],3)
print(d3)
#KNN分類器
newV = [2,4,0]
#knn_Classifier(newV,datasets,labels,2)
運行結果:
下一篇筆記分享學習如下內容
- —KNN分類器模型實現
- —利用KNN分類器採訪隨機遊客預測天氣感知度
- —機器學習庫sklearn實現預測天氣冷暖感知度
- 自然語言處理學習總結歸納