word 2 vec中国語の語彙を訓練する

3042 ワード

最近1つの問答システムをして、多くの論文を見て、主に作者がどのように問答を行うかを勉強して、大部分はこの過程です:1、コーパスを構築します;2、訓練語ベクトル;3、問題間と問答間の類似度の対比;4、オンラインで答えを検索する.5、情報抽出;6、答えを生成する.ネット上ではwiki百科事典のオープンソースの中国語の語彙を訓練することが多く、多くの著者が自分で構築した語彙に対してベクトルモデル計算を行うため、私も訓練を行う必要があります.選択可能な2つのアルゴリズムの1つはword 2 vecアルゴリズムで、1つはGloveアルゴリズムですが、現在Gloveアルゴリズムはwindowsシステム上で訓練することができません.そのため、word 2 vecアルゴリズムを選択してモデルトレーニングを行うしかありません.以下は自分の中国語の語彙を訓練するステップです.1、语料に対して分词を行って、停用语を取り除くのは明らかで、この2歩は训练モデルに対してとても重要で、とても大きい正确率を高めることができて、多く言わないで、直接コードを贴ります
def main():
       logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
       #      ,                      
      stopword_set = [' ',' ',' ',',','。','?',':',';','、','!','@','#','¥','%','&'
          , '*','(',')','-','=','+','[',']','{','}','1','2','3','4','5','6','7','8','9','0','~','`','$'
          , '','/',' ']
      #output        
      output = open('../resource/wiki_text.txt','w',encoding='utf-8')
      #      
      with open('C:/Users\Administrator\Desktop/wikizh.txt','r',encoding='utf-8') as f:
          for texts_num,line in enumerate(f):
              line = line.strip('
') words = jieba.cut(line,cut_all=False) for word in words: if word not in stopword_set: output.write(word + ' ') output.write('
') if(texts_num + 1) % 10000 == 0: logging.info(' %d '%(texts_num + 1)) output.close()

2、語彙を訓練するネット上でword 2 vecの使い方を公開している人がたくさんいます.ここで、デフォルトではアルゴリズムについて基礎的な理解があります.もし本当に理解していないなら、私に連絡してください.私は説明します.コードは次のとおりです.
if __name__ == '__main__':
    program = os.path.basename(sys.argv[0])
    logger = logging.getLogger(program)

    logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
    logging.root.setLevel(level=logging.INFO)
    logger.info("running %s" % ' '.join(sys.argv))

    # check and process input arguments
    if len(sys.argv) < 4:
        print(globals()['__doc__'] % locals())
        sys.exit(1)
    inp, outp1, outp2 = sys.argv[1:4]

    model = Word2Vec(LineSentence(inp), size=400, window=5, min_count=5,
                     workers=multiprocessing.cpu_count())

    # trim unneeded model memory = use(much) less RAM
    # model.init_sims(replace=True)
    model.save(outp1)
    model.wv.save_word2vec_format(outp2, binary=False)

python ***.py訓練語彙経路訓練モデル名.model(.modelで終わる)訓練語ベクトル名.vector(.vevtorで終わる)以上のコードはword 2 vecを使って自分の語彙を訓練していますが、より良い効果を得るためにはアルゴリズムを深く改善する必要があります.試してみてください.より良い効果が得られれば、次の質問効果にも大きな影響を与えます.