Skip to main content

书面英语样本的句法复杂度分析器

项目描述

NeoSCA

支持版本 皮皮 平台 执照

NeoSCA 是书面英语语言样本的句法复杂性分析器。它是对 陆晓飞L2 Syntactic Complexity Analyzer的重写,支持 Windows、macOS 和 Linux。

描述

与 L2SCA 一样,NeoSCA 以纯文本格式的书面英语语言样本作为输入,统计以下 9 个结构在文本中出现的频率:

  1. 单词(W)
  2. 句子 (S)
  3. 动词短语(VP)
  4. 条款 (C)
  5. T 单位 (T)
  6. 从属子句 (DC)
  7. 复杂的 T 单位 (CT)
  8. 并列短语 (CP)
  9. 复标称 (CN)

并计算文本的以下 14 个句法复杂度指数:

  1. 平均句子长度(MLS)
  2. T单位的平均长度(MLT)
  3. 子句平均长度 (MLC)
  4. 每句从句 (C/S)
  5. 每 T 单位的动词短语 (VP/T)
  6. 每 T 单位的条款 (C/T)
  7. 每个子句的从属子句 (DC/C)
  8. 每个 T 单元的从属子句 (DC/T)
  9. 每句 T 单位 (T/S)
  10. 复数 T 单位比 (CT/T)
  11. 每 T 单位的坐标短语 (CP/T)
  12. 每个子句的协调短语 (CP/C)
  13. 每 T 单位的复标称 (CN/T)
  14. 每个子句的复杂名词 (CP/C)

比较

L2SCA NeoSCA
在 macOS 和 Linux 上运行 Windows、macOS 和 Linux上运行
单输入和多输入分别由两个命令处理 两种情况下的一个命令,让您的生活更轻松
仅在其自己的主目录下运行 在任何目录下运行
仅输出“9+14”句法结构的频率 添加保留中间结果的选项,即Stanford Parser的解析结果,Tregex的查询结果

用法

  1. 单输入:
nsca sample1.txt 
# output will be saved in result.csv
nsca sample1.txt -o sample1.csv 
# custom output file
  1. 多输入:
nsca sample1.txt sample2.txt
nsca sample*.txt 
# wildcard characters are also supported
nsca sample[1-10].txt
  1. 使用-p/--reserve-parsed 保留 Stanford Parser 的解析文件。使用-m/--reserve-match 保留 Stanford Tregex 的匹配结果。
nsca sample1.txt -p -m

安装

  1. 安装neosca
pip install neosca
  1. 安装Java 8 或更高版本

  2. 下载最新版本的 斯坦福解析器斯坦福 Tregex

  3. 设置STANFORD_PARSER_HOMESTANFORD_TREGEX_HOME

  • 视窗:

在环境变量窗口中(按Windows+ s,键入env,然后按Enter):

STANFORD_PARSER_HOME=\path\to\stanford-parser-full-2020-11-17
STANFORD_TREGEX_HOME=\path\to\stanford-tregex-2020-11-17
  • Linux/macOS:
export STANFORD_PARSER_HOME=/path/to/stanford-parser-full-2020-11-17
export STANFORD_TREGEX_HOME=/path/to/stanford-tregex-2020-11-17

在引擎盖下

NeoSCA 作为 Stanford Parser 和 Stanford Tregex 的包装器,L2SCA 也是如此。如果您不熟悉这两个依赖项,下面是一些简单的示例。详细解释可以在《 语料库注释和分析的计算方法》(Lu,2014)一书中找到。

  • 斯坦福解析器

假设您有一个名为的文件sample.txt,其中包含一个句子:

This is an example.

这个命令:

java -mx1500m -cp "/path/to/stanford-parser-full-2020-11-17/*" edu.stanford.nlp.parser.lexparser.LexicalizedParser -outputFormat penn edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz /path/to/sample.txt

给出短语结构树:

(ROOT
  (S
    (NP (DT This))
    (VP (VBZ is)
      (NP (DT an) (NN example)))
    (. .)))

树可以如下可视化,去掉引号。

短语结构树

在这棵树中,起始符号是树根级别的标签“ROOT”,4 个终止符号是句子中的 4 个单词,位于树的分支的底部。非终结符号位于起始符号和终结符号之间,包括许多用于不同分句、短语和词汇类别的标签。例如,非终结符号“NP”表示短语类别“名词短语”。

在解析输入文件时,NeoSCA 运行上述命令,如果您指定了-p选项,则将短语结构树保存在具有.parsed扩展名的文件中。

  • 斯坦福正则表达式

Tregex 针对由 Stanford Parser 生成的短语结构树查询类似正则表达式的模式,称为 Tregex 模式。

假设 asample.parsed有:

(ROOT
  (S
    (NP (DT This))
    (VP (VBZ is)
      (NP (DT an) (NN example)))
    (. .)))

这个命令:

java -mx100m -cp "/path/to/stanford-tregex-2020-11-17/stanford-tregex.jar" edu.stanford.nlp.trees.tregex.TregexPattern "NP" sample.parsed -o

Pattern string:
NP
Parsed representation:
Root NP
Reading trees from file(s) sample.parsed
(NP (DT This))

(NP (DT an) (NN example))

There were 2 matches in total.

在查询解析文件时,NeoSCA 运行上述命令并记住每个预先指定的 Tregex 模式的匹配数。

如果您指定了该-m选项,它还会将匹配项(NP在我们的示例中为两个 s)保存在.matches扩展名为的文件中。

引用

如果您在工作中使用 NeoSCA,请使用以下引用:

@misc{tan2022neosca,
author = {Tan, Long},
title = {NeoSCA},
howpublished = {\url{https://github.com/tanloong/neosca}},
year = {2022}
}

另外,你需要引用 Lu 描述 L2SCA 的文章:

@article{lu2010automatic,
title={Automatic analysis of syntactic complexity in second language writing},
author={Lu, Xiaofei},
journal={International journal of corpus linguistics},
volume={15},
number={4},
pages={474--496},
year={2010},
publisher={John Benjamins}
}

执照

与 L2SCA 一样,NeoSCA 是根据 GNU 通用公共许可证第 2 版或更高版本获得许可的。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

neosca-0.0.19.tar.gz (19.1 kB 查看哈希

已上传 source

内置分布

neosca-0.0.19-py3-none-any.whl (18.0 kB 查看哈希

已上传 py3