Skip to main content

mlang client

Project description

说明

mlang是一个NLP处理平台,使用它可以完成NLP常见的任务。它是mlang server的客户端。

安装

pip install mlang

使用

基本配置

from mlang_client import mclient

mclient.SERVER_URL = 'http://mlang.meizu.com'
mclient.VERSION = 'v1.0

基础功能

from mlang_client.mclient import MLang
  • 分句
txt = '魅族手机不错的,你觉得呢?'

sents = MLang.ssplit(txt)
print(sents)

sents = MLang.ssplit(txt, impl='re', pattern='[。]')
print(sents)

sents = MLang.ssplit(txt, impl='ltp')
print(sents)
  • 分词
txt = '魅族手机不错的,你觉得呢?'

tokens = MLang.tokenize(txt)
print(tokens)

tokens = MLang.tokenize(txt, impl='jieba')
print(tokens)

tokens = MLang.tokenize(txt, impl='fmm')
print(tokens)

tokens = MLang.tokenize(txt, impl='rmm')
print(tokens)
  • 词性标记
txt = '魅族手机不错的,你觉得呢?'

tokens = MLang.pos(txt)
print(tokens)

tokens = MLang.pos(txt, impl='ltp')
print(tokens)

tokens = MLang.pos(txt, impl='jieba')
print(tokens)

tokens = MLang.pos(txt, impl='jieba', revise=True, norm=True)
print(tokens)
  • 命名实体识别
txt = '魅族手机不错的,你觉得呢?'
xx = MLang.ner(txt)
print(xx)
  • 依存句法解析
txt = '魅族手机不错的,你觉得呢?'
relations = MLang.parse(txt)
print(relations)
  • 拼音转换
txt = '魅族手机不错的,你觉得呢?'
pinyins = MLang.hanzi2pinyin(txt)
print(pinyins)

pinyins = 'mei zu shou ji bu cuo de , ni jue de ne ?'
hanzis = MLang.pinyin2hanzi(pinyins)
print(hanzis)
  • 简繁转换
txt = '魅族手机不错的,你觉得呢?'
result = MLang.simplified2traditional(txt)
print(result)

txt = '魅族手機不錯的,你覺得呢?'
result = MLang.traditional2simplified(txt)
print(result)

语料管理

将本地的语料文件上传到服务器上,使用服务器上的资源对语料进行处理。服务器上的语料通过语料id来标识。

from mlang_client.mclient import MCorpus
  • 上传语料
file = 'pinglun.min.txt'
result = MCorpus.upload('pinglun', file)
print(result)
  • 列出所有语料
corpus_list = MCorpus.list()
print(corpus_list)
  • 单个语料信息
corpus = MCorpus.info('c1')
print(corpus)
  • 删除语料
MCorpus.remove('c')
  • 下载语料
MCorpus.download('pinglun', 'pinglun.c.txt')

词表管理

词表就是一个包含很多词的文件,每个词占一行。 词表保存在服务器上,通过词表id标识 词表可在本地构建然后上传到服务器,也可以直接通过语料在服务器上进行构建。

from mlang_client.mclient import MVocab
  • 列出所有词表
vocab_list = MVocab.list()
print(vocab_list)
  • 获取单词词表信息
info = MVocab.info('v1')
print(info)
  • 上传词表
MVocab.upload('xv1', 'mobile.vocab.txt')
  • 删除词表
MVocab.remove('xv1')
  • 下载词表
MVocab.download('a1', 'a1.txt')
  • 构建词表
vocabid = 'xv1'
MVocab.build(vocabid, 'a1')
vocab = MVocab.get(vocabid)
print(vocab)
print(vocab.words())

情感分析

构建情感词库、分析一段文本的情感/观点

from mlang_client.mclient import MSentimentAnalyser
  • 计算情感分值
txt = '魅族手机不错的,你觉得呢?'
score = MSentimentAnalyser.score(txt)
print(score)

is_subject = MSentimentAnalyser.is_subject(txt)
print(is_subject)
  • 提取评价对象/情感词
terms = MSentimentAnalyser.extract_terms('pinglun', s_seed=['漂亮', '不错'])
print(terms)
  • 提取评价观点
txt = '魅族手机不错的,你觉得呢?'
opinions = MSentimentAnalyser.extract_opinions(txt, target_vocab_id).data
for opinion in opinions:
    print(opinion['tmodifiers'], opinion['target']['token'], opinion['smodifiers'], opinion['sentiment']['token'], opinion['orientation'])

文本/单词表征

将文本/单词以向量的形式表示

from mlang.config import DEFAULT_W2V
from mlang.config import DEFAULT_D2V
from mlang.config import DEFAULT_VOCAB
from mlang_client.mclient import MWordRepresentation
from mlang_client.mclient import MTextRepresentation
  • 单词表征
vec = MWordRepresentation.represent('手机')
print(vec)

vec = MWordRepresentation.represent('手机', impl='w2v', w2vid=DEFAULT_W2V)
print(vec)

vec = MWordRepresentation.represent('手机', impl='onehot', vocabid=DEFAULT_VOCAB)
print(vec)
  • 单词相似度
sim = MWordRepresentation.similarity('魅族', '华为')
print(sim)
sim = MWordRepresentation.similarity('魅族', '华为', w2vid=DEFAULT_W2V)
print(sim)
  • 文本表征
txt = '魅族手机不错的,你觉得呢?'

vec = MTextRepresentation.represent(txt)
print('default:', vec)

vec = MTextRepresentation.represent(txt, impl='w2v', w2vid=DEFAULT_W2V)
print('w2v:', vec)

vec = MTextRepresentation.represent(txt, impl='d2v', d2vid=DEFAULT_D2V)
print('d2v:', vec)

vec = MTextRepresentation.represent(txt, impl='vocab', vocabid=DEFAULT_VOCAB)
print('vocab:', vec)
  • 文本相似度
txt1 = '魅族手机不错的,你觉得呢?'
txt2 = '华为的手机一般。'

sim = MTextRepresentation.similarity(txt1, txt2)
print('default:', sim)

sim = MTextRepresentation.similarity(txt1, txt2, impl='w2v', w2vid=DEFAULT_W2V)
print('w2v:', sim)

sim = MTextRepresentation.similarity(txt1, txt2, impl='d2v', d2vid=DEFAULT_D2V)
print('d2v:', sim)

sim = MTextRepresentation.similarity(txt1, txt2, impl='vocab', vocabid=DEFAULT_VOCAB)
print('vocab:', sim)

文本/单词聚类

from mlang_client.mclient import MWordCluster
from mlang_client.mclient import MTextCluster
  • 单词聚类
result = MWordCluster.fit('xv1')
print(result)
  • 文本聚类
r = MTextCluster.fit('cc1')
print(r)

r = MTextCluster.fit('cc1', represent='d2v')
print(r)

r = MTextCluster.fit('cc1', represent='vocab')
print(r)

r = MTextCluster.fit('cc1', represent='w2v', n_clusters=3)
print(r)

语言模型

训练好的语言模型保存在服务器上,使用id来标识

from mlang_client.mclient import MLM
  • 列出所有的语言模型
lms = MLM.list()
print(lms)
  • 获得指定语言模型的信息
info = MLM.info('lm1')
print(info)
  • 预测句子概率
txt = '魅族手机不错的,你觉得呢?'
prob = MLM.prob(txt)
print(prob)

txt = '魅族手机不错的,你觉呢得?'
prob = MLM.prob(txt)
print(prob)
  • 训练语言模型
MLM.build('lm1', 'a1')
  • 下载语言模型文件
MLM.download('lm1.arpa', 'lm1.arpa')
  • 删除语言模型
MLM.remove('lm1')

Word2vec模型

from mlang_client.mclient import MWord2Vec
  • 列出所有模型
r = MWord2Vec.list()
print(r)
  • 获得指定模型的信息
r = MWord2Vec.info('w1')
print(r)
  • 下载模型文件
MWord2Vec.download('w1', 'w1.w2v.model')
  • 构建模型
r = MWord2Vec.build('w1', 'a1', epochs=20)
print(r)
  • 删除模型
MWord2Vec.remove('w1')

Doc2vec模型

from mlang_client.mclient import MDoc2Vec
  • 列出所有模型
r = MDoc2Vec.list()
print(r)
  • 获得指定模型的信息
r = MDoc2Vec.info('d2v1')
print(r)
  • 删除模型
r = MDoc2Vec.remove('d2v1')
print(r)
  • 下载模型文件
MDoc2Vec.download('d2v1', 'd1.d2v.model')
  • 构建模型
r = MDoc2Vec.build('d2v1', 'a1')
print(r)

Seq2Seq模型

from mlang_client.mclient import MSeq2Seq
  • 列出所有模型
r = MSeq2Seq.list()
print(r)
  • 获得指定模型的信息
r = MSeq2Seq.info('s2s1')
print(r)
  • 删除指定模型
r = MSeq2Seq.remove('s2s2')
print(r)
  • 下载模型文件
MSeq2Seq.download('s2s2', 's2s.model')
  • 构建模型
MSeq2Seq.build('s2s2', 'seq_c1')
  • 预测序列
txt = '魅族 的 手机 真 不错 运行 很 流畅 外观 很 漂亮'
result = MSeq2Seq.predict('sbd', txt).data

tokens = txt.split()
seqs = result.split()
for i, token in enumerate(tokens):
    print(token, seqs[i])

License

Copyright (c) 2017-2018 lishouguang. Licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for mlang, version 0.1.15
Filename, size File type Python version Upload date Hashes
Filename, size mlang-0.1.15.tar.gz (17.0 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page