
XMNLP: un kit de herramientas de procesamiento de lenguaje natural chino de código abierto
XMNLP: un kit de herramientas de procesamiento de lenguaje natural chino listos para usar
Instale la última versión de XMNLP
pip install -U xmnlp
Los usuarios nacionales pueden agregar índice-url
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U xmnlpDespués de instalar el paquete, también debe descargar los pesos del modelo que se utilizarán normalmente.
Descargue la versión correspondiente del modelo XMNLP. Si no está claro sobre la versión de XMNLP, puede ejecutar python -c 'import xmnlp; print(xmnlp.__version__)' para ver la versión
| Nombre del modelo | Versión aplicable | Dirección de descarga |
|---|---|---|
| XMNLP-ONNX-MODELS-V5.ZIP | V0.5.0, V0.5.1, V0.5.2, V0.5.3 | Feishu [ilghi] | Baidu NetDisk [L9ID] |
| xmnlp-onnx-mods-v4.zip | V0.4.0 | Feishu [dkla] | Baidu NetDisk [J1qi] |
| XMNLP-ONNX-MODELS-V3.ZIP | V0.3.2, V0.3.3 | Feishu [o4ba] | Baidu NetDisk [9G7E] |
Después de descargar el modelo, debe establecer la ruta del modelo XMNLP para que se ejecute normalmente. Se proporcionan dos métodos de configuración
Método 1: Configurar variables de entorno (recomendadas)
Una vez descomprimido el modelo descargado, puede establecer la variable de entorno para especificar la dirección del modelo. Tomar el sistema Linux como ejemplo, la configuración es la siguiente
export XMNLP_MODEL=/path/to/xmnlp-modelsMétodo 2: Configuración a través de funciones
Establezca la dirección del modelo antes de llamar a XMNLP, de la siguiente manera
import xmnlp
xmnlp . set_model ( '/path/to/xmnlp-models' )
* El anterior /path/to/ es solo para marcador de posición. Reemplácelo con la dirección del directorio real del modelo cuando se configure.
Segmentación de palabras chinas (predeterminada), basada en la coincidencia máxima inversa, Roberta + CRF se usa para el nuevo reconocimiento de palabras.
parámetro:
El resultado regresa:
Ejemplo:
> >> import xmnlp
> >> text = """xmnlp 是一款开箱即用的轻量级中文自然语言处理工具?。"""
> >> print ( xmnlp . seg ( text ))
[ 'xmnlp' , '是' , '一款' , '开箱' , '即用' , '的' , '轻量级' , '中文' , '自然语言' , '处理' , '工具' , '?' , '。' ]
La segmentación de palabras basada en la coincidencia máxima inversa no incluye un nuevo reconocimiento de palabras, y es más rápido.
parámetro:
El resultado regresa:
Ejemplo:
> >> import xmnlp
> >> text = """xmnlp 是一款开箱即用的轻量级中文自然语言处理工具?。"""
> >> print ( xmnlp . seg ( text ))
[ 'xmnlp' , '是' , '一款' , '开箱' , '即' , '用' , '的' , '轻量级' , '中文' , '自然语言' , '处理' , '工具' , '?' , '。' ]
Basado en el modelo Roberta + CRF, la velocidad es más lenta. Actualmente, la interfaz profunda solo admite chino simplificado, no chino tradicional.
parámetro:
El resultado regresa:
Ejemplo:
> >> import xmnlp
> >> text = """xmnlp 是一款开箱即用的轻量级中文自然语言处理工具?。"""
> >> print ( xmnlp . deep_seg ( text ))
[ 'xmnlp' , '是' , '一款' , '开箱' , '即用' , '的' , '轻' , '量级' , '中文' , '自然' , '语言' , '处理' , '工具' , '?' , '。' ]
Parte de la anotación del habla.
parámetro:
El resultado regresa:
Ejemplo:
> >> import xmnlp
> >> text = """xmnlp 是一款开箱即用的轻量级中文自然语言处理工具?。"""
> >> print ( xmnlp . tag ( text ))
[( 'xmnlp' , 'eng' ), ( '是' , 'v' ), ( '一款' , 'm' ), ( '开箱' , 'n' ), ( '即用' , 'v' ), ( '的' , 'u' ), ( '轻量级' , 'b' ), ( '中文' , 'nz' ), ( '自然语言' , 'l' ), ( '处理' , 'v' ), ( '工具' , 'n' ), ( '?' , 'x' ), ( '。' , 'x' )]
Basado en la coincidencia máxima inversa, no incluye un nuevo reconocimiento de palabras, y es más rápido.
parámetro:
El resultado regresa:
Ejemplo:
> >> import xmnlp
> >> text = """xmnlp 是一款开箱即用的轻量级中文自然语言处理工具?。"""
> >> print ( xmnlp . fast_tag ( text ))
[( 'xmnlp' , 'eng' ), ( '是' , 'v' ), ( '一款' , 'm' ), ( '开箱' , 'n' ), ( '即' , 'v' ), ( '用' , 'p' ), ( '的' , 'uj' ), ( '轻量级' , 'b' ), ( '中文' , 'nz' ), ( '自然语言' , 'l' ), ( '处理' , 'v' ), ( '工具' , 'n' ), ( '?' , 'x' ), ( '。' , 'x' )]
Basado en el modelo Roberta + CRF, la velocidad es más lenta. Actualmente, la interfaz profunda solo admite chino simplificado, no chino tradicional.
parámetro:
El resultado regresa:
Ejemplo:
> >> import xmnlp
> >> text = """xmnlp 是一款开箱即用的轻量级中文自然语言处理工具?。"""
> >> print ( xmnlp . deep_tag ( text ))
[( 'xmnlp' , 'x' ), ( '是' , 'v' ), ( '一款' , 'm' ), ( '开箱' , 'v' ), ( '即用' , 'v' ), ( '的' , 'u' ), ( '轻' , 'nz' ), ( '量级' , 'b' ), ( '中文' , 'nz' ), ( '自然' , 'n' ), ( '语言' , 'n' ), ( '处理' , 'v' ), ( '工具' , 'n' ), ( '?' , 'w' ), ( '。' , 'w' )]Soporte de diccionario definido por el usuario, el formato de diccionario es
词1 词性1
词2 词性2
También compatible con el formato de diccionario del participio de Jieba
词1 词频1 词性1
词2 词频2 词性2
Nota: El espaciador en la línea anterior es el espacio
Ejemplo de uso:
from xmnlp . lexical . tokenization import Tokenization
# 定义 tokenizer
# detect_new_word 定义是否识别新词,默认 True, 设为 False 时速度会更快
tokenizer = Tokenization ( user_dict_path , detect_new_word = True )
# 分词
tokenizer . seg ( texts )
# 词性标注
tokenizer . tag ( texts )
Nombrado reconocimiento corporal, los tipos de entidades que respaldan el reconocimiento son:
parámetro:
El resultado regresa:
Ejemplo:
> >> import xmnlp
> >> text = "现任美国总统是拜登。"
> >> print ( xmnlp . ner ( text ))
[( '美国' , 'LOCATION' , 2 , 4 ), ( '总统' , 'JOB' , 4 , 6 ), ( '拜登' , 'PERSON' , 7 , 9 )]
Extraiga palabras clave del texto, basado en el algoritmo de Trank Text.
parámetro:
El resultado regresa:
Ejemplo:
> >> import xmnlp
> >> text = """自然语言处理: 是人工智能和语言学领域的分支学科。
...: 在这此领域中探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的
...: 语言。
...: 自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化
...: 为计算机程序更易于处理的形式。"""
> >> print ( xmnlp . keyword ( text ))
[( '自然语言' , 2.3000579596585897 ), ( '语言' , 1.4734141257937314 ), ( '计算机' , 1.3747500999598312 ), ( '转化' , 1.2687686226652466 ), ( '系统' , 1.1171384775870152 ), ( '领域' , 1.0970728069617324 ), ( '人类' , 1.0192131829490039 ), ( '生成' , 1.0075197087342542 ), ( '认知' , 0.9327188339671753 ), ( '指' , 0.9218423928455112 )]
Extraiga oraciones clave del texto, basado en el algoritmo TextTrank.
parámetro:
El resultado regresa:
Ejemplo:
> >> import xmnlp
> >> text = """自然语言处理: 是人工智能和语言学领域的分支学科。
...: 在这此领域中探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的
...: 语言。
...: 自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化
...: 为计算机程序更易于处理的形式。"""
> >> print ( xmnlp . keyphrase ( text , k = 2 ))
[ '自然语言理解系统把自然语言转化为计算机程序更易于处理的形式' , '自然语言生成系统把计算机数据转化为自然语言' ]
El reconocimiento emocional se basa en la capacitación en el corpus de revisión de comercio electrónico y es adecuado para el reconocimiento emocional en escenarios de comercio electrónico.
parámetro:
El resultado regresa:
Ejemplo:
> >> import xmnlp
> >> text = "这本书真不错,下次还要买"
> >> print ( xmnlp . sentiment ( text ))
( 0.02727833203971386 , 0.9727216958999634 )
Texto a pinyin
parámetro:
El resultado regresa:
Ejemplo:
> >> import xmnlp
> >> text = "自然语言处理"
> >> print ( xmnlp . pinyin ( text ))
[ 'Zi' , 'ran' , 'yu' , 'yan' , 'chu' , 'li' ]
Extraer radicales de texto
parámetro:
El resultado regresa:
Ejemplo:
> >> import xmnlp
> >> text = "自然语言处理"
> >> print ( xmnlp . radical ( text ))
[ '自' , '灬' , '讠' , '言' , '夂' , '王' ]
Corrección de errores de texto
parámetro:
El resultado regresa:
Ejemplo:
> >> import xmnlp
> >> text = "不能适应体育专业选拔人材的要求"
> >> print ( xmnlp . checker ( text ))
{( 11 , '材' ): [( '才' , 1.58528071641922 ), ( '材' , 1.0009655653266236 ), ( '裁' , 1.0000178480604518 ), ( '员' , 0.35814568400382996 ), ( '士' , 0.011077565141022205 )]}Función de inicialización del vector de oración
Las siguientes son las tres funciones miembros de SentenceVector
Ejemplo de uso
import numpy as np
from xmnlp . sv import SentenceVector
query = '我想买手机'
docs = [
'我想买苹果手机' ,
'我喜欢吃苹果'
]
sv = SentenceVector ( genre = '通用' )
for doc in docs :
print ( 'doc:' , doc )
print ( 'similarity:' , sv . similarity ( query , doc ))
print ( 'most similar doc:' , sv . most_similar ( query , docs ))
print ( 'query representation shape:' , sv . transform ( query ). shape )Producción
doc: 我想买苹果手机
similarity: 0.68668646
doc: 我喜欢吃苹果
similarity: 0.3020076
most similar doc: [('我想买苹果手机', 16.255546509314417)]
query representation shape: (312,)
La nueva versión ya no proporciona la interfaz de procesamiento paralelo correspondiente y requiere el uso de xmnlp.utils.parallel_handler para definir la interfaz de procesamiento paralelo.
La interfaz es la siguiente:
xmnlp . utils . parallel_handler ( callback : Callable , texts : List [ str ], n_jobs : int = 2 , ** kwargs ) - > Generator [ List [ Any ], None , None ]Ejemplo de uso:
from functools import partial
import xmnlp
from xmnlp . utils import parallel_handler
seg_parallel = partial ( parallel_handler , xmnlp . seg )
print ( seg_parallel ( texts ))
Espero con ansias las contribuciones de más amigos para crear una herramienta NLP china simple y fácil de usar
@ misc {
xmnlp ,
title = { XMNLP : A Lightweight Chinese Natural Language Processing Toolkit },
author = { Xianming Li },
year = { 2018 },
publisher = { GitHub },
howpublished = { url { https : // github . com / SeanLee97 / xmnlp }},
}
Estoy comprometido con la investigación e implementación de PNL, y mis instrucciones incluyen: extracción de información, clasificación emocional, etc.
Para otras necesidades de implementación de PNL, comuníquese con [email protected] (este es un servicio pagado, y los errores relacionados con XMNLP pueden informarse directamente)
Busque en la cuenta oficial xmnlp-ai para seguir, seleccione "Grupo de comunicación" en el menú para unirse al grupo.
Los datos utilizados en este proyecto son principalmente:
Apache 2.0
La mayoría de los modelos se construyen en base a Langml