本文共 2908 字,大约阅读时间需要 9 分钟。
语言技术平台(LTP)由哈工大社会计算与信息检索研究中心研发并推广,是国内外最具影响力的中文处理基础平台。经过11年的持续优化与推广,LTP已成为中文自然语言处理领域的重要工具。该平台提供了多项核心中文处理功能,包括中文分词、词性标注、命名实体识别、依存句法分析和语义角色标注等。
pyltp是LTP的Python封装版本,支持Python2和Python3两大版本。其安装方法简单易捷,用户可以通过以下命令快速安装:
pip3 install pyltp
pyltp提供了完整的中文模型文件,涵盖分词、词性标注、命名实体识别、依存句法分析和语义角色标注等多个任务。这些模型文件包括:
pyltp的使用可以通过以下示例项目结构来体验:
import osfrom pyltp import Segmentor, Postagger, NamedEntityRecognizer, Parser, SementicRoleLabeller# 分词cws_model_path = os.path.join(os.path.dirname(__file__), 'data/cws.model')segmentor = Segmentor()segmentor.load_with_lexicon(cws_model_path, 'lexicon.txt')sent = '根据韩联社的报道,美国防部发言人杰夫·莫莱尔表示,美国防部长盖茨将于2011年1月14日访问韩国。'words = segmentor.segment(sent)# 词性标注pos_model_path = os.path.join(os.path.dirname(__file__), 'data/pos.model')postagger = Postagger()postags = postagger.postag(words)# 命名实体识别ner_model_path = os.path.join(os.path.dirname(__file__), 'data/ner.model')recognizer = NamedEntityRecognizer()netags = recognizer.recognize(words, postags)# 依存句法分析parser_model_path = os.path.join(os.path.dirname(__file__), 'data/parser.model')parser = Parser()arcs = parser.parse(words, postags)# 语义角色标注srl_model_path = os.path.join(os.path.dirname(__file__), 'data/pisrl.model')labeller = SementicRoleLabeller()roles = labeller.label(words, postags, arcs)
分句是将一段文本按句子分隔成独立单元。以下是一个分句的示例:
from pyltp import SentenceSplittersplitter = SentenceSplitter()doc = '据韩联社12月28日反映,美国防部发言人杰夫·莫莱尔27日表示,美国防部长盖茨将于2011年1月14日访问韩国。盖茨原计划从明年1月9日至14日陆续访问中国和日本,目前,他决定在行程中增加对韩国的访问。莫莱尔表示,盖茨在访韩期间将会晤韩国国防部长官金宽镇,就朝鲜近日的行动交换意见,同时商讨加强韩美两军同盟关系等问题,拟定共同应对朝鲜挑衅和核计划的方案。'sents = splitter.split(doc)for sent in sents: print(sent)
分词是将句子按词语分隔。以下是一个分词的示例:
from pyltp import Segmentorsegmentor = Segmentor()segmentor.load_with_lexicon('cws.model', 'lexicon.txt')sent = '据韩联社12月28日反映,美国防部发言人杰夫·莫莱尔27日表示,美国防部长盖茨将于2011年1月14日访问韩国。'words = segmentor.segment(sent)print('/'.join(words)) 词性标注是为每个词语赋予其词性。以下是一个词性标注的示例:
from pyltp import Postaggerpostagger = Postagger()postags = postagger.postag(words)for word, postag in zip(words, postags): print(f"{word} {postag}") 命名实体识别(NER)识别句子中的名词实体,如人名、地名和组织机构名。以下是一个NER的示例:
from pyltp import NamedEntityRecognizerrecognizer = NamedEntityRecognizer()netags = recognizer.recognize(words, postags)print(' '.join(netags)) 依存句法分析揭示句子中成分之间的依存关系。以下是一个依存句法分析的示例:
from pyltp import Parserparser = Parser()arcs = parser.parse(words, postags)for arc in arcs: print(f"{arc.relation}({arc.head}), {words[arc.head-1]}") 语义角色标注识别句子中的语义角色,如主语、宾语和宾语的角色。以下是一个语义角色标注的示例:
from pyltp import SementicRoleLabellerlabeller = SementicRoleLabeller()roles = labeller.label(words, postags, arcs)for role in roles: print(f"{words[role.index]} {role}") pyltp作为中文自然语言处理领域的领先平台,为研究者和开发者提供了强大的工具支持。无论是初学者还是资深专家,都可以通过pyltp快速实现中文文本的多任务处理。
转载地址:http://vcjfk.baihongyu.com/