NeoSCA:句法复杂度分析器L2SCA的重写版本

NeoSCA 使用说明
Windows 使用 python --version 不显示版本号?
如果 Windows 用户 python --version 不显示版本号、也没有其他提示的,打开系统设置,搜索 alias,找到应用别名设置,关掉里面的 python.exe 和 python3.exe 的别名。然后在 powershell 里再试一下 python --version。
macOS 找不到 powershell?
在启动台搜索并打开“终端”
macOS 使用 pip install neosca 显示 command not found?
改成 pip3 install neosca
输入文件
输入文件可以是 .txt 或 .docx 或 .odt 文件。
之前版本的 NeoSCA 要求 .txt 文件是 utf-8 编码,从 0.0.42 之后不需要一定是 utf-8,NeoSCA 会尝试使用 utf-8 编码读取 .txt 文件,如果失败再检测 .txt 文件的编码,然后用检测到的编码读取 .txt 文件。
如果文件名包含空格
如果文件名包含空格,需要在两边加英文双引号,比如分析 "sample 1.txt" 要用 `nsca "sample 1.txt"`,如果不加引号,NeoSCA 会认为你输入了两个文件名,一个是 sample,另一个是 1.txt。
类似地,使用通配符批量分析,也需要在必要时使用引号。假设文件被命名为以下格式:

如果只分析 levelA 的语料,要用 `nsca "level A*.txt"`。如果不加引号 (`nsca level A*.txt`),NeoSCA 会认为你输入了两组文件,一组是名为 level 的单个文件,另一组是所有以 A 开头、以 .txt 结尾的文件。当然,如果你要一次性分析所有文件,只需 `nsca *.txt` 即可,不需要使用引号,因为通配符 * 可以匹配空格。
标点右侧要有空格
如果输入文件的标点符号右侧没有空格,会 (1) 导致 NeoSCA 运行失败,(2) 影响输出结果的准确性。
(1) 图中文本 (https://pastebin.com/HzmmgtVx) 所有的 “.” 右侧都没有空格,NeoSCA 所调用的 Stanford Parser 会把它当作一个 300 多词的超长句子来分析,所占用的内存超出了 1.5G 限制,导致报错,报错被发送给 NeoSCA,NeoSCA 收到 Stanford Parser 的报错后退出。


使用 L2SCA (http://personal.psu.edu/xxl13/downloads/l2sca.html) 分析上图文本,L2SCA 没有报错,但输出结果的所有列均为0。

使用 Web-based L2SCA (https://aihaiyang.com/software/l2sca/single/) 分析上图文本,出现 504 错误。


(2) 如果 Stanford Parser 没有超出内存限制,NeoSCA 正常运行,得到了 result.csv,该文件的 S(entences) 列的值会不准确。对于上图文本,S 列的值会是 1,这显然不对。S 的错误会进而导致 MLS、C/S、T/S列的错误。对于 “It was quite amazing,really.Isn't it?” 这个句子,虽然 “amazing” 和 “really” 可以被 Stanford Parser 识别为 2 个词,但“really,Isn” 会被视作1个词,而不是2个,这又会导致 W、MLS、MLT、MLC 列的值的错误。

所以在使用 NeoSCA 分析语料之前,请检查语料是否存在“标点右侧无空格”的情况,若有,请手动在其后添加1个空格。