ParsCit 安装与使用
ParsCit 是一个论文文本解析工具包,把论文PDF转换成txt以后,通过 ParsCit 可以识别出论文文本中对各个参考文献的引用位置,也可以对文本划分出其属于论文中的哪个成分(标题、摘要、正文等等)。
ParsCit 网站:https://parscit.comp.nus.edu.sg/index.html
代码Github: https://github.com/knmnyn/ParsCit
目前已经有了基于神经网络的新版本 Neural-ParsCit( https://github.com/WING-NUS/Neural-ParsCit ),由于在使用中遇到点问题,暂且还是回归到旧版 ParsCit 来。
自带的安装说明比较简略,外加由于这里还用到了 Perl 完全没接触过,安装起来就比较困难。幸好找到一篇2019年的博文,而且专门针对 Ubuntu 16 上的安装做了详细说明,照着一路走下来还是比较顺利就安装成功了。
参考 https://ws-dl.blogspot.com/2019/07/2019-03-27-install-parscit-on-ubuntu.html
** 下载 ParsCit **
Download the source code from https://github.com/knmnyn/ParsCit and unzip it.
$ unzip ParsCit-master.zip
** 安装 c++ compiler ** 直接 g++ 试一下是否已有编译器,如果没有,则安装
$ sudo apt install g++
可以写一个简单的程序测试 g++ 是否好用(非必需步骤) To test it, write a simple program hello.cc and run
$ g++ -o hello hello.cc
$ ./hello
2
** 安装 ruby **
$ sudo apt install ruby-full
To test it, run
$ ruby --version
** 安装 Perl ** Perl一般随着Ubuntu自带了,to test it, run
$ perl --version
** 安装 Perl 模块 ** 首先运行【注意:我实测时中途会有一些报错说无操作权限创建man文件,建议下面这条命令用 sudo 来执行】
$ perl -MCPAN -e shell
按照提示一路默认值走下去,直到出现了如下的 CPAN 命令提示符:
cpan[1]>
然后按照下面输入命令,逐个安装相关的包:
cpan[1]> install Class::Struct
cpan[2]> install Getopt::Long
cpan[3]> install Getopt::Std
cpan[4]> install File::Basename
cpan[5]> install File::Spec
cpan[6]> install FindBin
cpan[7]> install HTML::Entities
cpan[8]> install IO::File
cpan[9]> install POSIX
cpan[10]> install XML::Parser
cpan[11]> install XML::Twig
(这一步会有一些需要确认的,按默认值走即可)
cpan[12]> install XML::Writer
cpan[13]> install XML::Writer::String
2
3
4
5
6
7
8
9
10
11
12
13
14
** 安装 CRF++ ** 在 ParsCit 的代码中内置了一份 CRF++ 0.51,首先进入到 crfpp 的文件夹里
$ cd crfpp/
解压 tar 文件
$ tar xvf crf++-0.51.tar.gz
进到 CRF++-0.51 目录中,下面命令均在此目录下
$ cd CRF++-0.51/
运行下面的命令
$ ./configure
$ make
2
会出现如下的错误提示
path.h:26:52: error: 'size_t' has not been declared
void calcExpectation(double *expected, double, size_t) const;
^
Makefile:375: recipe for target 'node.lo' failed
make[1]: *** [node.lo] Error 1
make[1]: Leaving directory '/home/jwu/github/ParsCit-master/crfpp/CRF++-0.51'
Makefile:240: recipe for target 'all' failed
make: *** [all] Error 2
2
3
4
5
6
7
8
修改一下 node.cpp 和 path.cpp 这两个文件,在文件的开头处添加两行include,添加之后效果如下:
#include "stdlib.h" //新加这一行
#include <iostream> //新加这一行
#include <cmath> //以下原本就有
#include "path.h"
#include "common.h"
2
3
4
5
重新运行
$ ./configure
$ make
2
再运行
$ make clean
$ make
2
需要将编译生成的一些文件,复制到 parsCit 指定的位置,以便 parsCit 使用
// 在 CRF++-0.51 目录下运行
$ cp cp crf_learn crf_test ..
$ cd .libs // 切换到 CRF++-0.51/.libs 下
$ cp -Rf * ../../.libs
2
3
4
** 大功告成 ** 测试下 ParsCit 能否使用,切换到 ParsCit 代码的根目录,再切换到 bin 目录
$ ./citeExtract.pl -m extract_all ../demodata/sample2.txt
$ ./citeExtract.pl -i xml -m extract_all ../demodata/E06-1050.xml
2
如果屏幕上有parse的输出结果,说明运行正常了。