def _prepare(self): # 词性预处理 # 词性参考 https://github.com/lancopku/pkuseg-python/blob/master/tags.txt # jio.util.pkuseg_postag_loader() self.pos_name = set(pkuseg_postag_loader().keys()) self.pos_exception = set(['u', 'p', 'c', 'y', 'e', 'o', 'w']) self.loose_pos_name = self.pos_name - self.pos_exception self.strict_pos_name = [ 'a', 'n', 'j', 'nr', 'ns', 'nt', 'nx', 'nz', 'ad', 'an', 'vn', 'vd', 'vx' ] # 去除冗余短语的规则 self.redundent_strict_pattern = re.compile( '[\*\|`\;:丨-\<\>]') # 有一个字符即抛弃 self.redundent_loose_pattern = re.compile( '[/\d\.\-:=a-z+,%]+') # 全部是该字符即抛弃 self.extra_date_ptn = re.compile('\d{1,2}[月|日]') # 加载 idf,计算其 oov 均值 self.idf_dict = idf_loader() self.median_idf = sorted(self.idf_dict.values())[len(self.idf_dict) // 2] self.seg = pkuseg.pkuseg(postag=True) # 北大分词器 # 短语长度权重字典,调整绝大多数的短语要位于 2~6 个词之间 # 根据人工抽取的关键短语结果,短语词长有一个泊松分布,而根据 idf 和 lda 概率的结果,也有一个 # 分布,两者之间存在偏差,因此,直接对短语长度分布采用权重进行调节,使抽取分布逼近人工的分布。 self.phrases_length_control_dict = { 1: 1, 2: 5.6, 3: 1.1, 4: 2.0, 5: 0.7, 6: 0.9, 7: 0.48, 8: 0.43, 9: 0.24, 10: 0.15, 11: 0.07, 12: 0.05 } self.phrases_length_control_none = 0.01 # 在大于 7 时选取 # 短语词性组合权重字典 with open(os.path.join(DIR_PATH, 'pos_combine_weights.json'), 'r', encoding='utf8') as f: self.pos_combine_weights_dict = json.load(f) # 读取停用词文件 self.stop_words = stopwords_loader() # 加载 lda 模型参数 self._lda_prob_matrix()
def _prepare(self): self.pos_name = set(pkuseg_postag_loader().keys()) self.strict_pos_name = [ 'a', 'n', 'j', 'nr', 'ns', 'nt', 'nx', 'nz', 'ad', 'an', 'vn', 'vd', 'vx' ] self.seg = pkuseg.pkuseg(postag=True) # 北大分词器 # 加载 idf,计算其 oov 均值 self.idf_dict = idf_loader() self.median_idf = sorted(self.idf_dict.values())[len(self.idf_dict) // 2] # 读取停用词文件 self.stop_words = stopwords_loader() # 加载 lda 模型参数 self._lda_prob_matrix()