这里我下载了flask源码,首先要清洗语料,利用re这个第三方库。
import re
with open(r'F:\Users\asus\JupyterProjects\data\flask.py') as f:
text = f.read()
text = re.sub(r'[^\w\s]','',text)
# 与前面章节所讲的相同,比较简单
def clean_words(input_str):
punctuation = ',;:"!?”“_-'
word_list = input_str.lower().replace('[^a-zA-Z0-9_]+','').split()
word_list = [word.strip(punctuation) for word in word_list]
return word_list
text = clean_words(text)
text_list = sorted(set(text))
text_listdict = {word:i for (i,word) in enumerate(text_list)}
len(text_listdict)
Out[114]
1103
text_listdict['1px']
Out[115]
70
傲慢与偏见更多些,这里我的text_lisdict的长度为1103,傲慢的长度为7000+。
word_t = torch.zeros(len(text),len(text_listdict))
for i,word in enumerate(text):
word_index = text_listdict[word]
word_t[i][word_index] = 1
1.首先损失了单词之间的联系,比如某一个单词后面大概率为另一个单词,但是独热方式并不能表示出来。
2.与傲慢与偏见相比,傲慢要损失的多一点。因为flask源文件的单词数较少,且代码中各种符号较多。