英文句法解析(1)

 大纲: 使用stanza进行英文句法解析的流程

工具:Jupyter Notebook

安装stanza

!pip install stanza

这一步耗时较多,因为它需要下载一些数据和模型。这些数据和模型是用于自然语言处理的,包括语言识别和命名实体识别。这些数据和模型非常大,因此下载和安装需要花费一定的时间。所以,在安装Stanza时,耐心等待,直到安装完成。

如果在一个ipynb文件中安装了一个库,其他的ipynb文件在同一个环境中,就不需要再次安装了。在同一个环境下,库已经被成功安装,其他ipynb文件可以直接引用这个库。但是,如果在不同的环境中打开ipynb文件,那么就需要在每个环境中单独安装需要使用的库。

报错

 WARNING: The scripts convert-caffe2-to-onnx.exe, convert-onnx-to-caffe2.exe and torchrun.exe are installed in 'C:\Users\86180\AppData\Roaming\Python\Python39\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

解决方法

该警告意为某些可执行文件(scripts)被安装在了一个不在系统的 PATH 环境变量中的目录下。PATH 是一个包含系统用于查找可执行文件的目录列表的环境变量。这个警告通常不会导致软件功能上的问题,只是提醒你这些脚本不在系统 PATH 中。可以采取以下方法解决 

 将目录添加到 PATH 中: 如果你希望将这些脚本所在的目录添加到 PATH 中,这样系统就能够在任何目录下找到它们,可以按照下面的步骤来做:

  • 打开系统的环境变量设置。在 Windows 上,你可以在“控制面板” -> “系统” -> “高级系统设置” -> “高级”选项卡下找到。
  • 在系统属性窗口中,点击“环境变量”按钮。
  • 在下方的“系统变量”部分中,找到名为 PATH 的变量,选中它,然后点击“编辑”。
  • 在编辑环境变量窗口中,点击“新建”并添加你所需的目录路径(例如,'C:\Users\86180\AppData\Roaming\Python\Python39\Scripts'),然后保存并关闭窗口。

## 当然,忽略该警告也不影响使用stanza。

下载语言支持

使用命令 stanza.download() 可以下载对不同语言的支持,默认存放目录为:~/stanza_resources。可以使用 stanza.download('zh', dir="you_path") 更改存放路径。中文语言包大小为 1.5 GB,英文语言包为800多兆。

注:可能需要多试几次才能下载成功 ~

import stanza
stanza.download('en')

报错

ConnectionError: HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /stanfordnlp/stanza-en/resolve/v1.5.1/models/default.zip (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000013FA35D79D0>: Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。'))

解决方法

这个错误表明计算机无法建立到 "huggingface.co" 的连接,可能是因为网络问题。

因此:魔法上网后,该问题得到了解决。

加载英文模型

构造处理管道,pipeline

nlp = stanza.Pipeline('en')

载入待分析的原始文本

with open('OriTxtEn.txt', 'r') as f:
    text = f.read()

开始分析

doc = nlp(text)

输出结果

for sentence in doc.sentences:
    for word in sentence.words:
        print(word.text, word.lemma, word.pos)

得到的结果是一个由句子(Sentence)组成的列表,每个句子包含多个词语(Word),可以使用下面的代码进行遍历和打印。

其中,word.text表示单词的原始文本,word.lemma表示单词的词元形式,word.pos表示单词在句子中的词性。

报错

无结果输出

解决方法

No sentences found 可能原因:

文本格式问题:可以尝试在文件读取后打印文本,检查是否正确读取了文本。

修改代码,添加纠错提示:

if not doc.sentences:
    print("No sentences found.")
else:
    for sentence in doc.sentences:
        for word in sentence.words:
            print(word.text, word.lemma, word.pos_)

显示

  说明文件读取不出文本内容,于是重新保存txt文档。

再次尝试:

似乎已解决,继续运行。 

句法分析

报错

解决方法


完整代码

import stanza

# 下载英文模型
stanza.download('en')

# 读取要分析的文本文件
with open('OriTxt.txt', 'r') as f:
    text = f.read()
    print("Text read from file:", text)

# 使用stanza进行句法分析
nlp = stanza.Pipeline('en')
doc = nlp(text)

# 遍历结果,打印每个单词的原始文本、词元形式和词性
if not doc.sentences:
    print("No sentences found.")
else:
    # 打开或创建 ResultEn.txt 文件以写入
    with open(r'C:\Users\86180\NLP-dyn\ResultEn.txt', 'w', encoding='utf-8') as result_file:
        # 遍历句子和单词,将结果写入文件
        for sentence in doc.sentences:
            for word in sentence.words:
                result_line = f"{word.text} {word.lemma} {word.pos}\n"
                result_file.write(result_line)

    print("Results written to ResultEn.txt.")
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
自然语言处理中进行词形还原、分词、词性标注等任务,通常需要使用一些工具和技术来实现。其中,常用的工具包括NLTK、Stanford NLP、spaCy等,这些工具提供了丰富的功能和算法,可以用来处理文本数据中的各种任务。 对于词形还原,可以使用词干提取算法或者基于规则的方法来实现。常用的词干提取算法包括Porter算法和Snowball算法等,这些算法可以将单词转换为其基本形式。基于规则的方法则需要事先定义好一些规则,根据这些规则对单词进行转换。 分词是将文本按照词语进行切分的过程,常用的分词算法包括最大匹配法、最大概率法和隐马尔科夫模型等。这些算法可以根据不同的文本特征和语言特点来进行分词操作。 词性标注是将文本中的每个单词标注上其对应的词性,例如名词、动词、形容词等。常用的词性标注算法包括基于规则的方法和基于统计的方法,其中基于统计的方法使用条件随机场、最大熵模型等算法来进行标注。 句法解析树是将句子按照其语法结构进行划分的过程,可以使用依存句法和短语结构句法两种方法来进行解析。其中,依存句法是以中心词为基础,将句子中的各个词语之间的关系表示为有向边的形式,最终形成一棵依存树。短语结构句法则是以短语为基础,将句子中的各个短语之间的关系表示为树形结构。 共指消解是指在文本中识别出指代同一实体的表达方式,例如“他”、“她”等代词所指代的具体人物。常用的方法包括基于规则的方法和基于机器学习的方法,其中机器学习方法使用支持向量机、最大熵模型等算法来进行分类操作。 去停用词是指在文本中去除一些无实际含义的词语,例如“的”、“是”等。常用的停用词列表包括中文常用停用词表和英文常用停用词表等,可以根据需求进行选择和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值