【问题】
idf计算是不是错了? idf计算结果 用底数为e或2都不是这个结果 |
【答复】
实际应用时,对这个公式进行了调整,
double idf = Math.log((1.0 + docCnt) / (1.0 + df));
对于你的例子
System.out.println(Math.log((1.0+2)/(1.0+1)));
结果正好为 0.4054651081081644
【问题】
问下 Segment对英文分词不起作用吗?
【答复】
是的,Segment仅支持中文分词,详见教程21.2.1节 中文分词。英文分词请参考教程21.2.2节 Tokenizer和RegexTokenizer
【问题】
对英文进行切分,比如thatisanenglishbook 分出 that is an english book,或者baidu ba ai id du bai aid idu 这样的
【答复】
第一种方式做不到,但是第二种方式,可以使用先有组件实现。需要用到教程23.3节中的NGram组件;教程21.2.2节中的RegexTokenizer,具体代码如下:
new MemSourceBatchOp(new Object[] {"example"}, "txt") .link( new RegexTokenizerBatchOp() .setGaps(false) .setPattern(".") .setSelectedCol("txt") ) .link( new NGramBatchOp() .setSelectedCol("txt") .setOutputCol("txt_2") .setN(2) ) .link( new NGramBatchOp() .setSelectedCol("txt") .setOutputCol("txt_3") .setN(3) ) .print();
运行结果为:
txt|txt_2|txt_3 ---|-----|----- e x a m p l e|e_x x_a a_m m_p p_l l_e|e_x_a x_a_m a_m_p m_p_l p_l_e
【问题】
请问下alink里面有没有tf_idf这个模型可以用?
【答复】
有,参见教程21.4节 单词的区分度;在21.5.2节 有使用TF_IDF提取关键词的例子。