nlp實際專案要用到,給定乙個詞,找出它的同義詞、相似詞、拓展詞等。
我思考了下,有:
1,同義詞表等方法。2,word2vec同義詞
1肯定可行,但效果不一定好,現有資源為 哈工大同義詞表;2方法之後試一下,乙個是效能和速度,在windows下能否有效執行,另乙個是到底有沒有相似詞,如果我要找「氨基酸」的相似詞,恐怕word2vec詞向量裡面沒有多少這種專有名詞吧。
本來以為爬蟲挺簡單的,但卻因為網上教程大多過時,失效,故花了一上午,遂記錄。
我了解到的,一般來說,爬蟲有:
1,python庫型別的, urlib,requests等。 採用。
2,scrapy爬蟲框架。 專門用來抓取大量資料的,不用。
3,selenium模擬瀏覽器爬蟲。 優點是可以有效反爬,缺點效能不高,不用。
不安裝任何第三方庫,用urlib
# -*- coding:utf-8 -*-
import urllib.request
#設定頭
headers =
data1 =
data1_encode = urllib.parse.urlencode(data1)
url = ''+data1_encode
#這樣也是可以的
#word = '氨基酸'
request = urllib.request.request(url, headers=headers)
my_file = urllib.request.urlopen(request)
data = my_file.read()
with open("test.html","wb") as f:
f.write(data)
print("finish")
結果:
擔心是訪問https的原因,加上:
還是沒用。
python3環境
實驗發現,headers內容不夠,加上多一點資訊,則正確。
#設定頭
headers = #定義標頭檔案,偽裝成瀏覽器
但得到的結果,確是亂碼!如圖:
需要一系列的解碼操作才行,因此,
# -*- coding:utf-8 -*-
import urllib.request
#設定頭
headers = #定義標頭檔案,偽裝成瀏覽器
word = '氨基酸'
request = urllib.request.request(url, headers=headers)
my_file = urllib.request.urlopen(request)
data = my_file.read()
#解碼操作
from io import bytesio
import gzip
buff = bytesio(data)
f = gzip.gzipfile(fileobj=buff)
res = f.read().decode('utf-8')
#寫到檔案的方式和下面不同
with open("test1.html","w",encoding="utf-8") as f:
f.write(res)
print("finish")
正確結果如:
#設定頭
headers = #定義標頭檔案,偽裝成瀏覽器
data1 =
data1_encode = urllib.parse.urlencode(data1)
url = ''+data1_encode
#這樣也是可以的
#word = '氨基酸'
x = requests.get(url,headers=headers)
data = x.content
with open("test2.html","wb") as f:
f.write(data)
print("finish")
成功!
截止2019.12.9正確,當前網上的此類教程大多數都是失效的。
nlp 獲取相似詞 - 2.提取相似詞
NLP入門(1)詞袋模型及句子相似度
建立詞袋 取得句子的向量表示 缺少手寫的計算相似度部分 coding utf 8 from nltk import word tokenize nltk可能報錯 在python的控制台執行 import nltk nltk.download punkt sent1 i love sky,i love...
NLP 相似度度量
一 提取特徵階段 1 tf idf 簡介 tf idf是一種統計方法,用以評估一字詞對於乙個檔案集或乙個語料庫中的其中乙份檔案的重要程度。字詞的重要性隨著它在檔案 現的次數成正比增加,但同時會隨著它在語料庫 現的頻率成反比下降。兩個重要的概念 1 tf 詞頻 term frequency,tf 指的...
NLP(四)詞向量
關於word2vec的原理網上很詳細了 本文 共2種詞向量轉換方式 1 獨熱編碼 2 word2vec from sklearn.preprocessing import labelencoder one hot labelencoder 輸入為列表好像也可以 word vector one hot...