日期:2014-05-20  浏览次数:20853 次

求一文本信息抽取java代码(对于您来说很简单)
有一个文本文件,内容为科学文献的元数据,内容格式如下:

-----------------------------
【文件序号】文献一序号
【来源篇名】文献一题名
【来源作者】文献一作者
【期刊】文献一期刊
【年代卷期】yyyy
参考文献:
1.作者.题名.期刊.=第一作者PM=/题名/QK=期刊ND=出版时间(yyyy格式)
2.author.title.journal.=first authorPM=/title/QK=journalND=yyyy
3.
4.
.
.
.
-----------------------------
【文件序号】文献二序号
【来源篇名】文献二题名
【来源作者】文献二作者
【期刊】文献二期刊
【年代卷期】yyyy
参考文献:
1.作者.题名.期刊.=第一作者PM=/题名/QK=期刊ND=出版时间(yyyy格式)
2.author.title.journal.=first authorPM=/title/QK=journalND=yyyy
3.
4.
.
.
.
-----------------------------
【文件序号】文献二序号
【来源篇名】文献二题名
【来源作者】文献二作者
【期刊】文献二期刊
【年代卷期】yyyy
参考文献:
1.作者.题名.期刊.=第一作者PM=/题名/QK=期刊ND=出版时间(yyyy格式)
2.author.title.journal.=first authorPM=/title/QK=journalND=yyyy
3.
4.
.
.
.


说明:
1、每篇文献有零至多篇参考文献;
2、每一条参考文献中,每个项目(作者、题名、期刊等等)之间的分割符号是“.”;
3、参考文献中有英文文献和外文作者,外文作者的名称有简写情况,如“Kevin,D.”,名字里面这个“.”是简写,不是分隔符。这类文献

的可能是这样表示的“1.Kevin,D..Title Comes here.Journal Comes here.PM=/title/QK=journalND=yyyy”
4、文中的期刊“Journal”其含义是“文献来源”的意思,大多数情况下是期刊,还有可能是互联网,可能是这种情

况:“1.Kevin,D..Title Comes 

here.http://www.abc.com/papers/xyz.html.PM=/title/QK=http://www.abc.com/papers/xyz.htmlND=yyyy”,这种情况把“www.abc.com

”截出来就好了。

要求:
1、抽取出所有文献(包括来源文献和参考文献)的“作者、题名、来源期刊和出版年份”;
2、抽取出所有文献之间的引用关系,分别使用两个vector存起来;
3、我建了两个类(java):Document(文献类)和Reference(引用),其定义如下:

Java code

public class Document{
    String title;
    String author;
    String journal;
    String date;
}

public class Reference{
    Document citingDoc;//引用文献
    Document citedDoc;//被引文献
}




------解决方案--------------------
数据给的不完整。
------解决方案--------------------
这个问题的在于这个“.”既是分隔符,也有可能是某个字段中的值。那么难点就在于如何区分是分隔符还是内容。如果字段的数量是确定的,那么我们可以猜测:1、比如连续两个点,则前一个点我们认为是前一个字段的内容。2、如果经过分割后的字段数量多于预计的字段数,则需要人工分析。

你可以建立一个知识库,用于识别一些比如网站这样的文本。在初步建立知识库后,先运行一遍,把异常的文献行筛选出来,再进行人工梳理,以充实知识库。这样来个几遍,你就可以建立一个完整的知识库了。也就可以完全筛选出来了。
------解决方案--------------------
估计比较难,因为你相当于有语义判断在里面。不过初步筛选应该可以。