在Ubuntu下配置pyrouge

简介:

ROUGE

  ROUGE是由微软亚洲研究院知识挖掘组(The Knowledge Mining group at Microsoft Research Asia)调研经理(research manager) Chin-Yew Lin 研发的,用于摘要的自动评价,通过比较机器自动生成的摘要(called system_summary)与人工生成的摘要(called model_summary, 认为它是理想的)中重叠单元的数量,来评价机器自动生成的摘要。该方法中考虑的重叠单元有n-gram, word sequences, word-pairs等,并提出了四个测量标准ROUNG-N, ROUNG-L, ROUNG-W, ROUNG-S [1]。
  该包用Perl语言编写,目前版本为ROUGE-1.5.5。

获取方法:
  去 http://www.berouge.com/Pages/default.aspx ,点击Download ROUGE,填写申请,几小时后会收到有下载链接的地址。

安装要求:
  1. 需要安装perl解释器(ubuntu 系统已自带, 通过perl -v可查看当前版本);
  2. 需要额外安装perl解释器的XML::DOM模块以及DB_File模块;
  3. 设置系统环境变量ROUGE_EVAL_HOME为/path/to/ROUGE-1.5.5/data

pyrouge

  pyrouge是将ROUGE包装成python可运行的一个python包,即通过安装pyrouge可以用python的语法调用ROUGE.
获取方法:
  直接运行pip install pyrouge
安装需求:
  需提前安装好ROUGE

Ubuntu15.04上安装ROUGE 与pyrouge

  转至VMWare搭建的ubuntu15.04虚拟机上配置,安装步骤及出现问题如下:

step1: 安装pip

方法1(windows通用):
  去网址 https://bootstrap.pypa.io/get-pip.py 将网页另存为至桌面, 按Ctrl + Alt + T调出Terminal对话框(windows的话是调出命令行)后运行如下代码

 $ cd /Desktop                         %%%切换运行目录至桌面
 $ python get-pip.py                   %%%用python编译运行

方法2(windows通用):
  如果装有easy install, 则:

$ easy_install pip

方法3(Debian和Ubuntu):

$ sudo apt-get install python-pip

注:ubuntu 自带 python2.7, windows 则需要手动安装python,且windows安装完pip后要在Path系统环境变量中添加 /path/to/Python2.7/Scripts/

step2:安装ROUGE

按如下步骤安装:

  1. 自申请回复邮件所指链接中下载ROUGE-1.5.5.tar.gz。
  2. 解压至当前文件夹
    \$ tar -xf ROUGE-1.5.5.tar.gz
  3. 安装Perl解释器的DB_File模块。
    \$ sudo wget http://www.cpan.org/authors/id/P/PM/PMQS/DB_File-1.835.tar.gz
    \$ sudo tar -zxvf DB_File-1.835.tar.gz
    \$ cd DB_File-1.835
    \$ perl Makefile.PL
    \$ make
    \$ make test # if %%%看到PASS为成功
    \$ sudo make install
  4. 安装Perl解释器的XML::DOM模块
    \$ sudo cpan install XML::DOM
  5. 设置环境变量ROUGE_EVAL_HOME,假设你解压的ROUGE-1.5.5在/usr/local/ROUGE-1.5.5
    \$ sudo gedit etc/profile %%%这样对所有用户都有效,若希望仅对当前用户有效则输入sudo gedit ~/.profile
    在跳出来的文本编辑器末尾添加
    export ROUGE_EVAL_HOME=“$ROUGE_EVAL_HOME:/usr/local/ROUGE-1.5.5/data"
    保存,重启系统,安装完毕。

错误:

  (3)中第五步的make指令出错为DB_File.xs:101: db.h: No such file or directory,说明未安装Berkeley DB library,或安装不正确。解决方法:如下

$ sudo apt-cache search libdb        %%%这条命令用于检查当前Berkeley DB library 的版本

得到结果如下:
在Ubuntu下配置pyrouge_第1张图片
故当前版本为libdb5.3, 执行如下指令即可:

$ sudo apt-get install libdb5.3-dev

step 3: 安装pyrouge

按如下步骤安装pyrouge:

  1. 使用pip安装pyrouge
    $ pip install pyrouge
  2. 假设之前安装的ROUGE-1.5.5在/usr/local/ROUGE-1.5.5, 运行指令
    pyrouge_set_rouge_path /usr/local/ROUGE-1.5.5
  3. 运行如下命令检查是否安装正确
    $ python -m pyrouge.test
    若看到以下信息表示安装正确了
    Ran 10 tests in 18.055s
    OK

错误

(3)运行后报错如下:

在Ubuntu下配置pyrouge_第2张图片

debug过程及解决方法:

  查看 “/usr/local/lib/python2.7/dist-packages/pyrouge/tests/Rouge155_test.py” 文件218行为:

    pyrouge_output = check_output_clean(pyrouge_command)

  该文件17行为:

    check_output_clean = lambda c: check_output(c).decode("UTF-8").strip()

  其中c即为pyrouge_command,作为参数传给check_output,而check_output为

    from subprocess import check_output

  subprocess是python2.7的文件(/usr/lib/python2.7/subprocess.py),与pyrouge无关,可见check_output与subprocess应该没有问题,问题应该出在pyrouge_command传递的参数上。自Rouge155_test.py文件可知pyrouge_command来自:

   command_part1 = (
            "pyrouge_evaluate_plain_text_files.py -m {} -s {} -sfp "
            "D(\d+).M.100.T.A -mfp D#ID#.M.100.T.[A-Z] -id 1 -rargs".format(
                model_dir, system_dir))

   command_part2 = [
            "\"-e {data} -c 90 -2 -1 -U -r 1000 -n 2 -w 1.2 "
            "-a -m {xml}\"".format(
                data=rouge.data_dir, xml=config_file)]

   pyrouge_command = command_part1.split() + command_part2

  在这些代码下方添加如下两行代码并保存,用于打印pyrouge_command (若不能保存,可能是文件权限或者编辑器的问题,更改Rouge155_test.py文件权限为’666’, 若还不可以保存,换个编辑器试试,我之前用gedit就不可以保存,换了notepad以后就可以了 )。

    print('hello world')
    print(pyrouge_command)

  terminal中重新运行python -m pyrouge.test,观察输出为:
在Ubuntu下配置pyrouge_第3张图片

  hello world下整个list内容都是pyrouge_command,打算计划逐项检查。
  第一项为’pyrouge_evaluate_plain_text_files.py’。看该项后缀,判断应该是一个python源文件,在整个硬盘中检索pyrouge_evaluate_plain_text_files.py,未找到。
在Ubuntu下配置pyrouge_第4张图片

  在Terminal下直接运行pyrouge_evaluate_plain_text_files.py,或用python解析运行python pyrouge_evaluate_plain_text_files.py, 都不行。可以判断,应该是这一项导致test_options( )运行出错。

  仔细阅读Rouge155_test.py文件中其他检测正确的函数,发现同样存在 ‘pyrouge_evaluate_plain_text_files’, 如 在函数’test_rouge_for_plain_test(self)’中,第170行,奇怪的是没有后缀 ‘.py’,这个函数却正常运行了,所以猜测是否是源代码出错了?
  尝试在Terminal下运行pyrouge_evaluate_plain_text_files,竟然神奇的发现,可以运行:
pyrouge_evaluate_plain_text_files

  由此更加确定了源代码出错的猜测.

  回到Rouge155_test.py文件中,修改第208行(test_options(self)函数中)如下:

    "pyrouge_evaluate_plain_text_files -m {} -s {} -sfp "

   同理对于test_write_config( )函数报错,修改Rouge155_test.py文件第192行如下:

    "pyrouge_write_config_file -m {m} -s {s} "

   再次运行python -m pyrouge.test,终于看到了OK!!!困扰我一个周的问题,竟然是pyrouge代码本身的问题!!OMG!!
test success!

问题

  2015.10.13 尝试在Windows下配置pyrouge失败,原因在于ROUGE-1.5.5使用WinRAR无法完全解压。用虚拟机解压后也无法拷贝过来。日后继续研究。

论文引用

[1]. Chin-Yew Lin. ROUGE: A Package for Automatic Evaluation of Summaries. In Proceedings of Workshop on Text Summarization Branches Out, Post-Conference Workshop of ACL 2004, Barcelona, Spain.

你可能感兴趣的:(ROUGE,pyrouge,Python)