规范引用的分析器。
citation-parser的Python项目详细描述
规范参考文献(例如“Hom.il.公司1124-125”)以一致的方式使用标点符号,这意味着我们可以定义一个形式语法来处理它们。
当遇到参考“Hom”时。il.公司1124-125”,人类读取器将对其进行如下解析:
- 数字前面的文本包含有关被引用作品和作者的信息
- 连字符用于指定文本段落的范围,例如第124行到第125行;
- 分号将引用与sanme引用中的另一个引用分隔开(通常将同一作品或不同作品的多个引用链接在一起);
- 逗号分隔了被引用作品的层次结构。在上面的例子中,1124-5表示从第1册第124行到第1册第125行
- 当引文范围是一个范围时,相同的层次结构被折叠:1.124-1.125既可以写成1.124-125,也可以写成1.124s,而不会对人类读者造成任何信息损失。
引用解析器由一个lexer、一个解析器和一个用antlr编写并编译成python代码的树解析器组成。然后将解析的引用序列化为json。
例如:
>>> cp = CitationParser() >>> cp.parse("Hom. Il. 1,124-125") [{'work': u'Hom. Il.', 'scp': {'start': ['1', '124'], 'end': ['1', '125']}