贝叶斯代码任务笔记
4.1 在3.1的基础上,完成选取所有词中前5000个出现频率最高的词为字典构造TF-IDF特征矩阵,然后训练模型
def get_ti_idf(features,top_k=5000):
tfidf = TfidfVectorizer(token_pattern=r"(?u)\b\w\w+\b", stop_words=stopwords,max_features=top_k)
return weight
其中top_k参数调整为5000,将此传入tf-idf的算法模型中,参数是max_features,这个参数的意思是去频率前N个数,不填写则默认为全部词语。
4.2 基于贝叶斯算法和编辑距离的单词拼写纠正
def load_all_words(data_dir):
text = open(data_dir).read().replace('\n', '').lower()
all_words = re.findall('[a-z]+', text)
return all_words
open方法中replace方法将换行符(‘\n’)替换成空格(’ ‘)
re.finadll方法是正则表达式进行匹配和替换
4.3 基于贝叶斯算法的中文新闻分类
分类代码思路:
- 对传入的字符串进行清洗,消除其中的非中文字符
- 用jieba分词器分词
- 获得tf_idf矩阵