一、简介

旨在帮助用户自动挖掘文本标签,是特征关键词提取工具,工具中集成了TextRank、TF-IDF算法、词跨度(SPAN)算法和LDA主题模型算法。

使用方法:

二、使用方法

2.1.TextRank

2.1.1.理论

参考:

2.1.2.调用方法

public static void main(String[] args) {
    String field = "6个小动作 让你秒秒都能瘦     这是一套小动作组成的瘦身操。看过之后你会觉得,原来真的可以无处不在,生活中的任何一个细节,都可以抓紧机会锻炼和减肥的,真是太简单了。       1、 门框斜压收内侧赘肉方法:身体离门框约1步距离,手摸门框下压,左右各3秒钟。      效果:平日运动不到的身体内侧可以得到很好的拉伸。      2、刷杯子瘦手臂 方法:手臂尽量抬高,做刷杯子的动作,换手再做10分钟。      效果:收紧手臂,紧致乳房。      3、 反手拿重物提臀瘦手臂方法:双手在身体后面做提拉重物动作。      效果:一周臀线上升2,手臂纤细2。      4、 读书收腹减腿法方法:坐在椅子上读书的时候双膝之间夹毛巾,保持毛巾不掉下来即可。      效果:收紧肚子、大腿赘肉。      5、开门瘦四肢方法:。双手交换做开拉门的动作;。双脚交换做开拉门的动作。      效果:拉伸四肢赘肉,雕塑四肢线条。        //          6、金鸡独立穿鞋瘦腰 动作:单脚站立做穿鞋的动作。      效果:伸拉腰部赘肉,直接瘦腰。    (实习编辑:李紫嫣)   ";
    List<String> keywords = Demo.textRank(field,10);
    System.out.println("关键词:" + keywords);
}

2.1.3.结果

效果, 动作, 方法, 赘肉, 门框, 手臂, 身体, 小动作, 四肢, 瘦腰

2.2.tf-idf算法

2.2.1.理论:

参考:

2.2.2.训练模型

@Test
public void IDFModelFit() throws Exception {
     IDFModelOption option = new IDFModelOption()
			.setMinFrequencey(2)
			.setDir("data/")
			.setModelDir("model/IDF/");
     IDFModel model = new IDFModel(option);
     model.fit();
}

2.2.3.调用方法

@Test
public void ldaTest() throws Exception {
      Option option = new Option()
		.setMetric(Metric.AVERAGE)
		.setStrategies(StrategyMetrics.IDF)
		.setModelOptions(new IDFModelOption())
		.setFilter(MyStopRecognition.getInstance()); 
      LabelHelper helper = new LabelHelper(option).build();
      String str = "6个小动作 让你秒秒都能瘦     这是一套小动作组成的瘦身操。看过之后你会觉得,原来真的可以无处不在,生活中的任何一个细节,都可以抓紧机会锻炼和减肥的,真是太简单了。       1、 门框斜压收内侧赘肉方法:身体离门框约1步距离,手摸门框下压,左右各3秒钟。      效果:平日运动不到的身体内侧可以得到很好的拉伸。      2、刷杯子瘦手臂 方法:手臂尽量抬高,做刷杯子的动作,换手再做10分钟。      效果:收紧手臂,紧致乳房。      3、 反手拿重物提臀瘦手臂方法:双手在身体后面做提拉重物动作。      效果:一周臀线上升2,手臂纤细2。      4、 读书收腹减腿法方法:坐在椅子上读书的时候双膝之间夹毛巾,保持毛巾不掉下来即可。      效果:收紧肚子、大腿赘肉。      5、开门瘦四肢方法:。双手交换做开拉门的动作;。双脚交换做开拉门的动作。      效果:拉伸四肢赘肉,雕塑四肢线条。        //          6、金鸡独立穿鞋瘦腰 动作:单脚站立做穿鞋的动作。      效果:伸拉腰部赘肉,直接瘦腰。    (实习编辑:李紫嫣)   ";
      List<KeywordLabel> labels = helper.predict(str, 10);
      for (KeywordLabel keywordLabel : labels) {
	System.out.println(keywordLabel);
      }
}

2.2.4.结果

门框=3.664074638671668

拉门=3.6097760747158785

穿鞋=3.040698275381654

小动作=2.5687126373035953

四肢=2.5614579554770067

斜压=2.553252568940863

赘肉=2.5139555911034943

重物=2.3745791096209836

杯子=2.3572229308186

读书=2.2068687144082118

手摸=2.1985823826579303 

2.3.词跨度算法

2.3.1.理论:

词跨度是指一个词或者短语字文中首次出现和末次出现之间的距离,词跨度越大说明这个词对文本越重要,可以反映文本的主题。一个词的跨度计算公式如下:

nlp 地点提取 nlp 标签提取_nlp 地点提取

其中,lasti表示词i在文本中最后出现的位置, firsti表示词 i 在文本中第一次出现的位置,sum表示文本中词的总数。

词跨度被作为提取关键词的方法是因为在现实中,文本中总是有很多噪声(指不是关键词的那些词),使用词跨度可以减少这些噪声。

 

2.3.2.调用方法

@Test
public void ldaTest() throws Exception {
      Option option = new Option()
		.setMetric(Metric.AVERAGE)
		.setStrategies(StrategyMetrics.SPAN)
		.setModelOptions(new WordSpanModelOption())
		.setFilter(MyStopRecognition.getInstance());
      LabelHelper helper = new LabelHelper(option).build();
      String str = "6个小动作 让你秒秒都能瘦	  这是一套小动作组成的瘦身操。看过之后你会觉得,原来真的可以无处不在,生活中的任何一个细节,都可以抓紧机会锻炼和减肥的,真是太简单了。       1、 门框斜压收内侧赘肉方法:身体离门框约1步距离,手摸门框下压,左右各3秒钟。      效果:平日运动不到的身体内侧可以得到很好的拉伸。      2、刷杯子瘦手臂 方法:手臂尽量抬高,做刷杯子的动作,换手再做10分钟。      效果:收紧手臂,紧致乳房。      3、 反手拿重物提臀瘦手臂方法:双手在身体后面做提拉重物动作。      效果:一周臀线上升2,手臂纤细2。      4、 读书收腹减腿法方法:坐在椅子上读书的时候双膝之间夹毛巾,保持毛巾不掉下来即可。      效果:收紧肚子、大腿赘肉。      5、开门瘦四肢方法:。双手交换做开拉门的动作;。双脚交换做开拉门的动作。      效果:拉伸四肢赘肉,雕塑四肢线条。        //          6、金鸡独立穿鞋瘦腰 动作:单脚站立做穿鞋的动作。      效果:伸拉腰部赘肉,直接瘦腰。    (实习编辑:李紫嫣) ";
      List<KeywordLabel> labels = helper.predict(str, 20);
      for (KeywordLabel keywordLabel : labels) {
	System.out.println(keywordLabel);
      }
}

2.3.3.结果

赘肉=0.82

效果=0.72

动作=0.58

方法=0.56

拉伸=0.53

身体=0.3

双手=0.28

收紧=0.27

手臂=0.21

四肢=0.16 

2.4.LDA主题模型算法

2.4.1.理论:

参考:

2.4.2.训练模型

@Test
public void LDAModelFit() throws Exception {
      LDAModelOption option = new LDAModelOption()
		.setDir("data/") //训练文件
		.setModelDir("model/LDA/")	//模型保存文件夹
		.setModelName("model-final")//模型多次迭代,默认选择最后一轮结果
              		.setNiters(100)//迭代轮次
		.setTwords(20)//top词数
		.setK(100);//主题数量
      LDAModel model = new LDAModel(option);
      model.fit();
}

2.4.3.调用方法

@Test
public void ldaTest() throws Exception {
      Option option = new Option()
		.setMetric(Metric.AVERAGE)
		.setStrategies(StrategyMetrics.LDA)
		.setModelOptions(new LDAModelOption());
      LabelHelper helper = new LabelHelper(option).build();
      String str = "6个小动作 让你秒秒都能瘦     这是一套小动作组成的瘦身操。看过之后你会觉得,原来真的可以无处不在,生活中的任何一个细节,都可以抓紧机会锻炼和减肥的,真是太简单了。       1、 门框斜压收内侧赘肉方法:身体离门框约1步距离,手摸门框下压,左右各3秒钟。      效果:平日运动不到的身体内侧可以得到很好的拉伸。      2、刷杯子瘦手臂 方法:手臂尽量抬高,做刷杯子的动作,换手再做10分钟。      效果:收紧手臂,紧致乳房。      3、 反手拿重物提臀瘦手臂方法:双手在身体后面做提拉重物动作。      效果:一周臀线上升2,手臂纤细2。      4、 读书收腹减腿法方法:坐在椅子上读书的时候双膝之间夹毛巾,保持毛巾不掉下来即可。      效果:收紧肚子、大腿赘肉。      5、开门瘦四肢方法:。双手交换做开拉门的动作;。双脚交换做开拉门的动作。      效果:拉伸四肢赘肉,雕塑四肢线条。        //          6、金鸡独立穿鞋瘦腰 动作:单脚站立做穿鞋的动作。      效果:伸拉腰部赘肉,直接瘦腰。    (实习编辑:李紫嫣)   ";
      List<KeywordLabel> labels = helper.predict(str, 10);
      for (KeywordLabel keywordLabel : labels) {
	System.out.println(keywordLabel);
      }
}

2.4.4.结果

动作=3.8887724510139923

身体=2.661365600884695

运动=2.3764437116685673

双手=1.49493318442435

锻炼=1.469841001945945

手臂=1.0400248680048332

大腿=0.9809437721154729

编辑=0.700652470796032

实习=0.6795867783590948

双脚=0.6585776522809864

 

三、应用分析

四个工具的关键词提取效果其实差距不大,总体来看 TextRank≈SPAN > LDA > TF-IDF,运行速率也无明显差别,可根据项目需求选用(个人推荐TextRank、SPAN,不用训练模型).