Skip to content

psylambda/StanfordNLPApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

关键词提取项目

主要内容

项目功能

  1. 由生语料库生成熟语料库
  2. 从熟语料库学习并生成NER模型
  3. 从文本中提取文本关键词

项目结构

整个项目是在IntelliJ IDEA下开发的Java项目,使用Maven管理包依赖.

  • /lib 存放stanford NER的jar包
  • /src/main/java 存放Java源代码
  • /src/main//resources 存放资源文件
    • /Corpus 存放生语料库及标记好的熟语料库
    • /Dict 存放疾病、症状、药品词典
    • /input 存放输入文件
    • /modle 存放训练好的NER模型
    • /output 存放提取好的关键词文件
    • /stanfordNLP 存放stanfordNLP需要的配置文件
    • /keywordsExtraction.properties 存放主配置文件

使用方法

修改主配置文件启用相应的功能和配置项,运行team.intelligenthealthcare.keywordsextraction.Main类的main方法即可,

内部实现

  1. 生语料库->熟语料库: -首先将生语料库切片成多个小生语料库
    • 使用stanfordNLP对每个小生语料库分词,并将结果组合
    • 在词典中查找分词后的每一个词或者连续的多个词组成的复合词,如果在词典里,则打上对应词典的标签
    • 生成的文本中每一行首先是一个词,然后是一个tab,最后是一个标签,此即为熟语料库
  2. 熟语料库->NER模型:
    • 直接调用edu.stanford.nlp.ie.crf.CRFClassifier的main方法读取配置文件从熟语料库学习出NER模型,此学习算法基于Conditional Random Field模型。参考资料
    • 此步骤会消耗大量内存,现在测试大约14万行的熟语料库需要10GB内存才可正常运行,否则会出现java.lang.OutOfMemory错误。解决办法是增大JVM堆内存,如-Xmx10240m -Xms256m. 此外,若物理内存不够,也可考虑将磁盘当作内存分页文件使用,这样程序可正常运行,但会内存页与磁盘页交换时大量读写磁盘,磁盘读写速度可能成为瓶颈。
  3. 文本->文本关键词
    • 调用stanfordNLP pipeline, 依次完成分词、分句、POS、NER步骤
    • 此处NER模型即为前一步训练出的模型

About

Try to use StanfordNLP tools

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages