用Mittens实现了Glove算法。但是算出了矩阵之后,不知道怎么用。另外,矩阵在误差0.02后,就很难再收敛了。不知道是不是有什么错误。这几天花时间研究一下。
Mittens的代码在我前面的博客中有。
使用的数据是从搜狐下载的。
停用词是网络上找的。如果有需要的可以私信。
也希望有大佬可以指点我的算法是否正确,以及如何使用Mittens。
代码没有整理,看着有些乱。(有些代码是借用的)
"""本文件包含中文NLP预处理常用的一些代码"""
import os
import re
import string
import numpy as np
import jieba
from gensim import corpora
class Preprocess(object):
"""中文NLP预处理类"""
# 用来处理数据的正则表达式
DIGIT_RE = re.compile(r'\d+')
LETTER_RE = re.compile(r'[a-zA-Z]+')
SPECIAL_SYMBOL_RE = re.compile(r'[^\u4e00-\u9fa5]+') # 用以删除一些特殊符号
STOPS = ['。', '.', '?', '?', '!', '!'] # 中英文句末字符
# 句子所限制的最小,最大长度
SENTENCE_MIN_LEN = 5
SENTENCE_MAX_LEN = 50
def __init__(self,stopwords=None):
self.stopwords = stopwords
@staticmethod
def read_text_file(text_file):
"""读取文本文件,并返回由每行文本作为元素组成的list."""
with open(text_file, 'r', encoding='utf-8') as file:
lines = [line.strip() for line in file]
return lines
@staticmethod
def write_text_file(text_list, target_file):