F
          
         
         
          a
         
         
          s
         
         
          t
          
         
         
          t
          
         
         
          e
         
         
          x
          
         
         
          t
          
         
        
        
        
       
      
      
     
     
      F 
a
s
t
t
e
x
      t
     
    
    
    是
    
    
     
      
       
        
         
          F
          
         
         
          a
         
         
          c
         
         
          e
         
         
          b
         
         
          o
         
         
          o
         
         
          k
          
         
        
        
        
       
      
      
     
     
      F 
a
c
e
b
o
o
      k
     
    
    
    开源的文本分类工具。最近工作上用到了这个包,感觉又快又好用,在这里简单的做一下记录,这里使用的
    
    
     
      
       
        
         
          P
         
         
          y
         
         
          t
          
         
         
          h
         
         
          o
         
         
          n
         
        
        
        
       
      
      
     
     
      P 
y
t
h
o
      n
     
    
    
    的相关接口
   
    1、安装
   
在linux下安装比较方便,直接使用pip进行安装
pip install fasttext
    2、文本分类
   
对于文本分类只要将数据准备好,就可以了
classifier = fasttext.supervised('data.train.txt', 'model', label_prefix='__label__')
    这里需要注意的是,训练的数据文件中类别的前缀默认是”__label__”,如果需要修改的话,可以在上面的参数中进行相关的修改。
    
    训练数据的相关格式
   
__label__1  姚明 喜欢 打 篮球 
    类别和句子之间用
    
    
     
      
       
        
         
          t
          
         
         
          a
         
         
          b
         
        
        
        
       
      
      
     
     
      t 
a
      b
     
    
    
    键分开,句子可以是按照词分割开的,也可以是按照字分割开的
    
    产生的模型文件会被保存成
    
    
     
      
       
        
         
          m
         
         
          o
         
         
          d
          
         
         
          e
         
         
          l
          
         
         
          .
         
         
          b
         
         
          i
         
         
          n
         
        
        
        
       
      
      
     
     
      m 
o
d
e
l
.
b
i
      n
     
    
    
    ,预测之前需要先加载相关模型
    
    我们可以用于预测文件的准确率和召回率
   
classifier = fasttext.load_model('model.bin')
result = classifier.test('test.txt')
print 'P@1:', result.precision
print 'R@1:', result.recall
    其中text.txt里面每行村放是的测试的句子,具体的格式与训练集合一致
    
    使用模型进行相关的预测
   
texts = ['example very long text 1', 'example very longtext 2']
labels = classifier.predict(texts)
print labels
# Or with the probability
labels = classifier.predict_proba(texts)
print labels输出的时候还可以预测的前n个值
labels = classifier.predict(texts, k=3)
print labels
# Or with the probability
labels = classifier.predict_proba(texts, k=3)
print labels
    3、生成词向量
   
生成词向量的时候,我用的是skipgram,这时候数据需要进行处理一下,转换成下面的格式,由于我训练的是基于字的词向量,所以我是按照每个字切分的
姚 明 喜 欢 打 篮 球 __label__1    model = fasttext.skipgram("cnews.all.train.txt", "model",dim = 50)
    这其中还有一些其他的配置参数可以选择,具体的参数可以查看参考文献。
    
    训练完成之后,会产生模型文件bin和词向量文件vec,词向量文件里面第一行是字典的长度和维度,下面是具体的词向量
   
    参考文献
    
    [1] :
    
     https://pypi.org/project/fasttext/
    
   
 
