成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于自然語言處理之One Hot模型

人工智能 自然語言處理
顧名思義,單熱表示從一個零向量開始,如果單詞出現在句子或文檔中,則將向量中的相應條目設置為 1。

[[421481]]

本文轉載自微信公眾號「python與大數據分析」,作者 一只小小鳥鳥 。轉載本文請聯系python與大數據分析公眾號。

最近工作實在有點忙,前陣子關于梯度和導數的事情把人折騰的夠嗆,數學學不好,搞機器學習和神經網絡真是頭疼;想轉到應用層面輕松一下,想到了自然語言處理,one hot模型是基礎也是入門,看起來很簡單的一個列表轉矩陣、詞典的功能,想著手工實現一下,結果看了一下CountVectorizer,發現不是那么回事兒,還是放棄了。

顧名思義,單熱表示從一個零向量開始,如果單詞出現在句子或文檔中,則將向量中的相應條目設置為 1。

對句子進行標記,忽略標點符號,并將所有的單詞都用小寫字母表示,就會得到一個大小為 8 的詞匯表: {time, fruit, flies, like, a, an, arrow, banana} 。所以,我們可以用一個八維的單熱向量來表示每個單詞。在本書中,我們使用 1[w] 表示標記/單詞 w 的單熱表示。

對于短語、句子或文檔,壓縮的單熱表示僅僅是其組成詞的邏輯或的單熱表示。短語 like a banana 的單熱表示將是一個 3×8 矩陣,其中的列是 8 維的單熱向量。通常還會看到“折疊”或二進制編碼,其中文本/短語由詞匯表長度的向量表示,用 0 和 1 表示單詞的缺失或存在。like a banana 的二進制編碼是: [0,0,0,1,1,0,0,1] 。

  1. from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer 
  2. import seaborn as sns 
  3. import matplotlib.pyplot as plt 
  4. import jieba 
  5. import jieba.analyse 
  6.  
  7. # 單熱表示從一個零向量開始,如果單詞出現在句子或文檔中,則將向量中的相應條目設置為 1。 
  8. # 英文的處理和展示 
  9. corpus = ['Time flies flies like an arrow.''Fruit flies like a banana.'
  10. one_hot_vectorizer = CountVectorizer(binary=True
  11. one_hot = one_hot_vectorizer.fit_transform(corpus).toarray() 
  12. sns.heatmap(one_hot, annot=True, cbar=False, yticklabels=['Sentence 1''Sentence 2']) 
  13. plt.show() 

  1. # 中文的處理和展示 
  2. # 獲取停用詞列表 
  3. def get_stopwords_list(stopwordfile): 
  4.     stopwords = [line.strip() for line in open(stopwordfile, encoding='UTF-8').readlines()] 
  5.     return stopwords 
  6.  
  7. # 移除停用詞 
  8. def movestopwords(sentence): 
  9.     stopwords = get_stopwords_list('stopwords.txt')  # 這里加載停用詞的路徑 
  10.     santi_words = [x for x in sentence if len(x) > 1 and x not in stopwords] 
  11.     return santi_words 
  12.  
  13. # 語料 
  14. corpus = ["小明碩士畢業于中國科學院計算所,后在日本京都大學深造。"
  15.           "小王本科在清華大學,后在南京計算所工作和深造,后在日本早稻田大學深造"
  16.           "小李本科在清華大學,碩士畢業于中國科學院計算所,博士在南京大學"
  17. newcorpus = [] 
  18. for str in corpus: 
  19.     orgwordlist = jieba.lcut(str)  # jieba分詞 
  20.     wordlist = movestopwords(orgwordlist)  # 移除停用詞 
  21.     newword = " ".join(wordlist)  # 按照語料庫要求進行空格分隔 
  22.     newcorpus.append(newword)  # 按照語料庫要求轉換成列表 
  23. # newcorpus 
  24. # ['小明 碩士 畢業 中國科學院 計算所 日本京都大學 深造'
  25. '小王 本科 清華大學 南京 計算所 工作 深造 日本早稻田大學 深造'
  26. '小李 本科 清華大學 碩士 畢業 中國科學院 計算所 博士 南京大學'
  27. one_hot_vectorizer = CountVectorizer(binary=True)  # 創建詞袋數據結構 
  28. one_hot = one_hot_vectorizer.fit_transform(newcorpus).toarray()  # 轉換語料,并矩陣化 
  29. # 下面為熱詞的輸出結果 
  30. # one_hot_vectorizer.vocabulary_ 
  31. # {'小明': 4, '碩士': 14, '畢業': 11, '中國科學院': 0, '計算所': 15, '日本京都大學': 8, '深造': 12, '小王': 6, '本科': 10, '清華大學': 13, '南京': 1, '工作': 7, '日本早稻田大學': 9, '小李': 5, '博士': 3, '南京大學': 2} 
  32. # one_hot_vectorizer.get_feature_names() 
  33. # ['中國科學院''南京''南京大學''博士''小明''小李''小王''工作''日本京都大學''日本早稻田大學''本科''畢業''深造''清華大學''碩士''計算所'
  34. # one_hot 
  35. # [[1 0 0 0 1 0 0 0 1 0 0 1 1 0 1 1] 
  36. #  [0 1 0 0 0 0 1 1 0 1 1 0 1 1 0 1] 
  37. #  [1 0 1 1 0 1 0 0 0 0 1 1 0 1 1 1]] 
  38. sns.set_style({'font.sans-serif': ['SimHei''Arial']}) 
  39. sns.heatmap(one_hot, annot=True, cbar=False, xticklabels=one_hot_vectorizer.get_feature_names(), 
  40.             yticklabels=['語句1''語句2''語句3']) 
  41. plt.show() 

IDF 表示懲罰常見的符號,并獎勵向量表示中的罕見符號。符號 w 的 IDF(w) 對語料庫的定義為其中 n[w] 是包含單詞 w 的文檔數量, N 是文檔總數。TF-IDF 分數就是 TF(w) * IDF(w) 的乘積。首先,請注意在所有文檔(例如, n[w] = N ), IDF(w) 為 0, TF-IDF 得分為 0,完全懲罰了這一項。其次,如果一個術語很少出現(可能只出現在一個文檔中),那么 IDF 就是 log n 的最大值

  1. tfidf_vectorizer = TfidfVectorizer()  # 創建詞袋數據結構 
  2. tfidf = tfidf_vectorizer.fit_transform(newcorpus).toarray()  # 轉換語料,并矩陣化 
  3. # 下面為熱詞的輸出結果 
  4. # tfidf_vectorizer.vocabulary_ 
  5. '小明': 4, '碩士': 14, '畢業': 11, '中國科學院': 0, '計算所': 15, '日本京都大學': 8, '深造': 12, '小王': 6, '本科': 10, '清華大學': 13, '南京': 1, '工作': 7, '日本早稻田大學': 9, '小李': 5, '博士': 3, '南京大學': 2} 
  6. # tfidf_vectorizer.get_feature_names() 
  7. # ['中國科學院''南京''南京大學''博士''小明''小李''小王''工作''日本京都大學''日本早稻田大學''本科''畢業''深造''清華大學''碩士''計算所'
  8. # tfidf 
  9. # [[0.35221512 0.         0.         0.         0.46312056 0.  0.         0.         0.46312056 0.         0.        0.35221512  0.35221512 0.         0.35221512 0.27352646] 
  10. #  [0.         0.35761701 0.         0.         0.         0.  0.35761701 0.35761701 0.         0.35761701 0.27197695 0.  0.54395391 0.27197695 0.         0.21121437] 
  11. #  [0.30443385 0.         0.40029393 0.40029393 0.         0.40029393  0.         0.         0.         0.         0.30443385 0.30443385  0.         0.30443385 0.30443385 0.23642005]] 
  12. sns.heatmap(tfidf, annot=True, cbar=False, xticklabels=tfidf_vectorizer.get_feature_names(), 
  13.             yticklabels=['語句1''語句2''語句3'], vmin=0, vmax=1, cm 

 

責任編輯:武曉燕 來源: python與大數據分析
相關推薦

2021-05-18 07:15:37

Python

2021-05-13 07:17:13

Snownlp自然語言處理庫

2018-02-27 09:32:13

神經網絡自然語言初探

2022-04-22 09:00:00

自然語言處理HMMCRF

2022-04-11 09:30:00

自然語言HMM深度學習

2020-04-24 10:53:08

自然語言處理NLP是人工智能

2024-02-05 14:18:07

自然語言處理

2021-05-17 09:00:00

自然語言人工智能技術

2017-10-19 17:05:58

深度學習自然語言

2024-04-24 11:38:46

語言模型NLP人工智能

2023-08-07 08:41:45

自然語言模型因果推理

2025-05-28 01:50:00

2021-06-28 10:10:42

人工智能AI自然語言

2017-04-17 15:03:16

Python自然語言處理

2017-06-20 11:00:13

大數據自然語言文本分類器

2023-08-04 10:18:15

2023-05-30 14:39:34

ChatGPT-4NLP

2020-02-25 12:00:53

自然語言開源工具

2017-05-05 15:34:49

自然語言處理

2020-02-25 23:28:50

工具代碼開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产激情视频在线观看 | 成人美女免费网站视频 | 在线免费观看a级片 | 网站国产| 中文字幕一级 | 国产亚洲一级 | 亚洲精品女人久久久 | 免费久久久 | 国产色在线 | 欧美日韩中文字幕在线 | 日韩欧美在线视频 | 国产免费观看一级国产 | 亚洲网站免费看 | 精品久久久久久 | 午夜精品久久久久久久久久久久 | 欧美一区二区在线播放 | 97免费视频在线观看 | 亚洲欧美日韩精品久久亚洲区 | 天天射天天操天天干 | 国产电影一区二区在线观看 | 欧美激情99 | 天堂网中文 | 国产精品成人一区二区三区 | 成人在线视频免费看 | 97人人爱 | 九九热在线免费视频 | 欧美一级二级视频 | 国产日韩欧美综合 | 麻豆一区一区三区四区 | 热re99久久精品国产99热 | 狠狠影院 | 香蕉91| 福利色导航 | 亚洲一区二区三区四区视频 | 久久精品一二三影院 | 啪啪av | 亚洲精品第一国产综合野 | 激情五月综合 | 久久久久99 | www狠狠爱com | 成人精品久久 |