我正在调用一个分析段落的服务,并突出显示我以这种格式提供的概念/单词
{
"paragraph": "My dog got sick on 12/13/2010. Then he died on 01/13/2011."
"concept":[
{
"start": "6",
"end": "9",
"word": "sick"
},
{
"start": "35",
"end": "38",
"word": "died"
}]
}
将日期与单词/概念联系起来的最佳方式是什么?
我尝试过一个解析和使用正则表达式的句子,它取得了一些成功,但对于更复杂的段落和句子结构,它失败了。
如果有人有建议或推荐某种类型的NLP框架,那将非常感激。
最终结果的示例:
{
"paragraph": "My dog got sick on 12/13/2010. Then he died on 01/13/2011."
"concept":[
{
"start": "6",
"end": "9",
"word": "sick",
"date" 12/13/2010"
},
{
"start": "35",
"end": "38",
"word": "died",
"date" 01/13/2011"
}]
}
我正在使用STS,JAVA 8,Spring Frameworks
答案 0 :(得分:0)
自然语言处理(NLP)框架的选择取决于各种标准,例如问题域,应用程序类型,您要执行的流程,性能,选择语言,您希望如何使用NLP软件 - 作为库,独立工具或完整系统等。
您应该建立一个标准列表,以帮助您最好地确定适合您的方案的语言处理工具。
这些是一些广泛使用的Java NLP软件:
如果您特别寻找自然语言日期解析器,您可以使用Natty。
import com.joestelmach.natty.*;
Parser parser = new Parser();
List groups = parser.parse("the day before next thursday");
for(DateGroup group:groups) {
List dates = group.getDates();
int line = group.getLine();
int column = group.getPosition();
String matchingValue = group.getText();
String syntaxTree = group.getSyntaxTree().toStringTree();
Map> parseMap = group.getParseLocations();
boolean isRecurreing = group.isRecurring();
Date recursUntil = group.getRecursUntil();
}
代码来源:Natty
其他有用的链接: