Exemplo n.º 1
0
def NLP_SDK(text,
            method='depParser',
            APP_ID=_APP_ID,
            API_KEY=_API_KEY,
            SECRET_KEY=_SECRET_KEY,
            **options):
    '''
    依据百度SDK官方文档的参数名称不做任何修改:<https://ai.baidu.com/docs#/NLP-Python-SDK/top>
    :param texts: 需要打标签的文档,部分方法需要以列表形式给出配对
    :param method: 功能名称
    :param APP_ID: 项目账号信息
    :param API_KEY: 项目账号信息
    :param SECRET_KEY: 项目账号信息
    :param options: 其他可选参数
    :return: 返回百度SDK返回结果
    method 功能名称全体:
    词法分析 lexer,词法分析(定制版)lexerCustom,依存句法分析 depParser,
    词向量表示 wordEmbedding,DNN语言模型 dnnlm,词义相似度 wordSimEmbedding,短文本相似度 wordSimEmbedding,
    评论观点抽取 commentTag,情感倾向分析 sentimentClassify,文章标签 keyword,文章分类 topic
    '''
    client = AipNlp(APP_ID, API_KEY, SECRET_KEY)
    # 词法分析
    if method == 'lexer':
        result = client.lexer(text, **options)
    # 词法分析(定制版)
    elif method == 'lexerCustom':
        result = client.lexerCustom(text, **options)
    # 依存句法分析
    elif method == 'depParser':
        result = client.depParser(text, **options)
    # 词向量表示
    elif method == 'wordEmbedding':
        result = client.wordEmbedding(text, **options)
    # DNN语言模型
    elif method == 'dnnlm':
        result = client.dnnlm(text, **options)
    # 词义相似度
    elif method == 'wordSimEmbedding':
        word1, word2 = text[0], text[1]
        result = client.wordSimEmbedding(word1, word2, **options)
    # 短文本相似度
    elif method == 'simnet':
        text1, text2 = text[0], text[1]
        result = client.simnet(text1, text2, **options)
    # 评论观点抽取
    elif method == 'commentTag':
        result = client.commentTag(text, **options)
    # 情感倾向分析
    elif method == 'sentimentClassify':
        result = client.sentimentClassify(text, **options)
    # 文章标签
    elif method == 'keyword':
        title, content = text[0], text[1]
        result = client.keyword(title, content, **options)
    # 文章分类
    elif method == 'topic':
        title, content = text[0], text[1]
        result = client.topic(title, content, **options)
    return result
Exemplo n.º 2
0
class LanguageAi(object):
    def __init__(self, config_path):
        config = configparser.ConfigParser()
        config.read(config_path)
        self.__app_id = config["language"]["app_id"]
        self.__api_key = config["language"]["api_key"]
        self.__secret_key = config["language"]["secret_key"]
        self.__client = AipNlp(self.__app_id, self.__api_key,
                               self.__secret_key)

    def __sentence_parse(self, sentence):
        json_str = self.__client.depParser(sentence)
        items = json_str["items"]
        parse = LanguageDeal(items)
        parse.deal()
        return json_str

    def reply_content(self, content):
        return self.__sentence_parse(content)
Exemplo n.º 3
0
def visualize():
    req_data = request.get_json()

    print(req_data['text'])

    # 调用依存句法分析
    nlp = AipNlp(app.config['APP_ID'], app.config['API_KEY'], app.config['SECRET_KEY'])
    deparse_result = nlp.depParser(req_data['text'], req_data.get('options', {}))

    if 'error_code' in deparse_result:
        return jsonify(deparse_result)

    res_data = render_template(
        'dependency_parsing.dot.jinja2',
        text=deparse_result['text'], items=deparse_result['items'], postags=POSTAGS, deprels=DEPRELS
    )

    print(res_data)

    return jsonify(result=res_data)
Exemplo n.º 4
0
def baidu_API(text):
    '''
    百度的NLP接口,包括词法句法依存关系等,具体接口在 http://ai.baidu.com/docs#/NLP-Python-SDK/top
    :param string: 输入的句子
    :return:
    '''
    from aip import AipNlp

    # 在百度AI开放平台中下载Python的SDK安装包
    # 创建百度账号后,在百度AI开放平台的控制台中查询,ID 在用户中心,Key和secret在安全中心
    APP_ID = '6b82e45926334c46a8e6b31374d5b43d'  # '你的 App ID'
    API_KEY = 'ba3c712ad3f94ae49327ef2965813b65'  # '你的 Api Key'
    SECRET_KEY = '90f490d485b7418da7d60a5126b51abf'  # '你的 Secret Key'
    client = AipNlp(APP_ID, API_KEY, SECRET_KEY)

    """ 调用依存句法分析 """
    # Query模型:该模型的训练数据来源于用户在百度的日常搜索数据,适用于处理信息需求类的搜索或口语query。
    # Web模型:该模型的训练数据来源于全网网页数据,适用于处理网页文本等书面表达句子。
    options = {}
    options["mode"] = 0 #模型选择。默认值为0,可选值mode=0(对应web模型);mode=1(对应query模型)
    return client.depParser(text=text,options=options)
# 创建连接
client = AipNlp(APP_ID, API_KEY, SECRET_KEY)

df = pd.read_excel('./data/jd_comp_final_v5.xlsx')
text = df[(df['Yes/No'] == 1) & (df['H'] == 0)]['cleaned_reviews'].tolist()
text = [''.join(item.split()) for item in text]

result = []
wrong_text = []

for k, sent in enumerate(text):
    if k % 100 == 0: print(k)
    cut = re.split('。|!|?', sent)
    try:
        for kk, ss in enumerate(cut):
            if ss != '':
                res = client.depParser(ss)['items']
                for item in res:
                    item['sent#'] = str(k)
                    item['sub_sent#'] = str(kk)
                    result.append(item)
            else:
                pass
    except:
        print(k, sent)
        wrong_text.append(sent)

dp_df = pd.DataFrame(result)
dp_df.to_excel('./data/seq_extraction.xlsx', index=None)
Exemplo n.º 6
0
class NLP():
    def __init__(self):
        """ 你的 APPID AK SK """
        APP_ID = '16043979'
        API_KEY = 'vr2XhyMVrjW7dWZOZjqeLsae'
        SECRET_KEY = 'RypiqTeFnVIED0zpKOxRIZHbc5a8a2wE'

        self.client = AipNlp(APP_ID, API_KEY, SECRET_KEY)

    def lexical_analysis(self):
        '''词法分析接口向用户提供分词、词性标注、专名识别三大功能;
        能够识别出文本串中的基本词汇(分词),对这些词汇进行重组、标注组合后词汇的词性,
        并进一步识别出命名实体'''
        text = "百度是一家高科技公司"
        """ 调用词法分析 """
        resp = self.client.lexer(text)
        print(resp)

    def Interdependent(self):
        '''依存句法分析
        依存句法分析接口可自动分析文本中的依存句法结构信息,
        利用句子中词与词之间的依存关系来表示词语的句法结构信息(如“主谓”、“动宾”、“定中”等结构关系),
        并用树状结构来表示整句的结构(如“主谓宾”、“定状补”等)。'''
        text = '小情歌'
        resp = self.client.depParser(text)
        print(resp)

    def vector(self):
        '''词向量分析
        词向量表示接口提供中文词向量的查询功能。'''
        word = '张飞'
        resp = self.client.wordEmbedding(word)
        print(resp)

    def Dnn(self):
        '''中文DNN语言模型接口用于输出切词结果并给出每个词在句子中的概率值,判断一句话是否符合语言表达习惯。'''
        # word = '你饭吃在哪?'
        word = '你今天上班了吗'
        resp = self.client.dnnlm(word)
        # ppl	float	描述句子通顺的值:数值越低,句子越通顺
        print(resp)
        print(resp['ppl'])

    def compare(self):
        # 需要字数相等
        '''词义相似度'''
        word1 = '茶壶'
        word2 = '水瓶'
        resp = self.client.wordSimEmbedding(word1, word2)
        print(resp)
        # score 相似度分数,分数越接近1越相似
        print(resp['score'])

    def text_compare(self):
        # 短文本相似度
        text1 = "穿衣裳"

        text2 = "穿衣服"
        """ 调用短文本相似度 """
        resp = self.client.simnet(text1, text2)
        print(resp)

    def comment(self):
        '''评论观点抽取'''
        text = '苹果笔记本后盖不好看'
        """ 如果有可选参数 """
        options = {}
        options["type"] = 13
        """ 带参数调用评论观点抽取 """
        resp = self.client.commentTag(text, options)
        print(resp)
        print(resp['items'])

    def emotion(self):
        # 情感分析
        text = '今天天气不错'
        resp = self.client.sentimentClassify(text)
        print(resp)
        print(resp['items'])
        print('积极情绪概率:%s' % resp['items'][0]['positive_prob'])
        print('消极情绪概率:%s' % resp['items'][0]['negative_prob'])

    def Tag(self):
        '''文章标签'''
        # 文章标签服务能够针对网络各类媒体文章进行快速的内容理解,根据输入含有标题的文章,
        # 输出多个内容标签以及对应的置信度,用于个性化推荐、相似文章聚合、文本内容分析等场景。
        title = "iphone手机出现“白苹果”原因及解决办法,用苹果手机的可以看下"

        content = "如果下面的方法还是没有解决你的问题建议来我们门店看下成都市锦江区红星路三段99号银石广场24层01室。"
        """ 调用文章标签 """
        resp = self.client.keyword(title, content)
        print(resp)

    def Ar_classification(self):
        '''文章分类'''
        title = "美男齐聚!吴彦祖冯德伦谢霆锋一起颁奖"

        content = "今晚的金像奖,《特警新人类》主演吴彦祖、冯德伦、谢霆锋、李璨琛一起颁奖,今年是电影上映二十年。一开始只有冯德伦、李璨琛上台,说“他们两个有事来不了”,随后吴彦祖和谢霆锋也从VCR中“走”到了台上,他们现场问大家想不想看《特警新人类3》,气氛热烈。"
        """ 调用文章分类 """
        # 可能一个文章有多个分类
        resp = self.client.topic(title, content)
        print(resp)
        print(resp['item'])

    def modify(self):
        '''文本纠错'''
        text = "只能门锁"
        """ 调用文本纠错 """
        resp = self.client.ecnet(text)
        print(resp)
        print(resp['item'])
        print('文本错误,正确结果:%s' % resp['item']['correct_query'])

    def emotion_qingxu(self):
        text = '今天本来高兴的'
        """ 如果有可选参数 """
        options = {}
        options["scene"] = "default"
        """ 带参数调用对话情绪识别接口 """
        resp = self.client.emotion(text, options)
        print(resp)
        print(resp['items'])
        print(type(resp['items']))
        print('回复:%s' % resp['items'][0]['replies'])

    def News(self):
        '''新闻摘要'''
        # 没有勾选此接口

        content = "麻省理工学院的研究团队为无人机在仓库中使用RFID技术进行库存查找等工作,创造了一种..."

        maxSummaryLen = 300
        """ 调用新闻摘要接口 """
        resp = self.client.newsSummary(content, maxSummaryLen)
        print(resp)
    # 中文词向量表示
    result = aipNlp.wordEmbedding(title[1])
    print(result)

    # 传入两个词计算两者相似度
    result = aipNlp.wordSimEmbedding('漂亮', '美丽')
    print(result)

    # 情感倾向分析
    result = aipNlp.sentimentClassify('Python具有丰富和强大的库')
    # +sentiment表示情感极性分类结果, 0:负向,1:中性,2:正向
    print(result)

    # 传入短语,计算中文DNN语言模型,语法结构分析
    result = aipNlp.dnnlm('python是程序设计语言')
    print(result)

    # 传入两个短文本,计算相似度
    result = aipNlp.simnet('python是程序设计语言', 'c是程序设计语言')
    # score两个文本相似度得分
    print(result)

    # 传入评论文本,获取情感属性
    result = aipNlp.commentTag('面包很好吃')
    print(result)

    # 依存句法分析
    result = aipNlp.depParser('python是最好的语言')
    print(result)
Exemplo n.º 8
0
# -*- coding: utf-8 -*-
from aip import AipNlp
from config import APP_ID, API_KEY, SECRET_KEY
__author__ = 'sml'

text = '进入币圈后,每天都过得很痛苦'
text2 = '通过类似与维基百科的协同编辑技术,意在对抗如今横行于社交网络和大型信息分发平台的虚假新闻和误导信息'
client = AipNlp(APP_ID, API_KEY, SECRET_KEY)
client.depParser(text)
Exemplo n.º 9
0
class BaiduAi:
    """百度ai接口
    https://ai.baidu.com/docs#/NLP-Python-SDK/f524c757
    """

    # empCount = 0

    def __init__(self):
        print('kaishi')
        # print(config.get('site', 'name'))
        self.app_id = config.get('baidu', 'app_id')
        self.api_key = config.get('baidu', 'app_key')
        self.secret_key = config.get('baidu', 'secret_key')
        self.client = AipNlp(self.app_id, self.api_key, self.secret_key)
        # """ 你的 APPID AK SK """
    def lexer(self, text):
        """ 调用词法分析
        """

        return self.client.lexer(text)


    def depParser(self, text):
        """依存句法分析
        
        """

        return self.client.depParser(text)


    def dnn(self, text):


        
        # result = client.synthesis(text, 'zh', 1, {
        #     'vol': 11,
        # })
        # text = "床前明月光"

        # """ 调用DNN语言模型 """
        # print(client)
        return self.client.dnnlm(text)
    def wordSimEmbedding(self,text1, text2):
        """ 词义相似度
        
        """
        return self.client.wordSimEmbedding( text1, text2)
    def simnet(self,text1, text2):
        """ 短文本相似度 
        
        """
        return self.client.simnet( text1, text2)
    def commentTag(self,content):
        """ 评论观点抽取
        
        """
        return self.client.commentTag( content)

    def topic(self,title,content):
        """ 调用文章分类 
        
        """
        try:
            return self.client.topic(title, content)
        except:
            return {'log_id': 8348398184393122510, 'item': {'lv2_tag_list': [], 'lv1_tag_list': []}}
            
    def keyword(self,title,content):
        """ 文章标签
        文章标签服务能够针对网络各类媒体文章进行快速的内容理解,根据输入含有标题的文章,输出多个内容标签以及对应的置信度,用于个性化推荐、相似文章聚合、文本内容分析等场景。
        
        """
        return self.client.keyword(title, content)
    def sentimentClassify(self,content):
        """情感倾向分析
        对包含主观观点信息的文本进行情感极性类别(积极、消极、中性)的判断,并给出相应的置信度。
        
        """

        return self.client.sentimentClassify(content)
    def ecnet(self,content):
        """智能纠错
        
        """

        return self.client.ecnet(content)

    def newsSummary(self,title,content):
        """生成摘要
        暂时无权限
        """

        return self.client.newsSummary(content, 200)
SECRET_KEY = 'r0mHeKH7TWVpPa0weKMVMpQ2whosIPGM '

aipNlp = AipNlp(APP_ID, API_KEY, SECRET_KEY)
result = aipNlp.lexer('黄健是一个帅锅')  #词法分析接口包含了中文分词和词性标注的功能
for key in result:
    print(key, result[key])

result = aipNlp.wordEmbedding("黄健")  #用于词汇数学计算,词向量
print(result)

result = aipNlp.wordSimEmbedding('早饭', '早点')  #词语相似度
print(result)
result = aipNlp.wordSimEmbedding('帅', '英俊')  #词语相似度
print(result)
result = aipNlp.wordSimEmbedding('强大', '厉害')  #词语相似度
print(result)

result = aipNlp.sentimentClassify('这家公司差的很')  #情感分析
print(result)

result = aipNlp.dnnlm('百度是个搜索公司')  #语法结构分析
print(result)

result = aipNlp.simnet('清华学霸', '清华学渣')  #词频相似度
print(result)

result = aipNlp.commentTag('面包很好吃,吃的我拉肚子了')  #评论观点提取,判断情感属性
print(result)

result = aipNlp.depParser('百度是一家伟大的公司')
print(result)
Exemplo n.º 11
0
    APP_ID = '10288634'
    API_KEY = '6lkpB5dBiMCcNRiU5MsPDGYu'
    SECRET_KEY = 'bkFssTaSQjEXPynFIjuytywOIREGzpGI'

    aipNlp = AipNlp(APP_ID, API_KEY, SECRET_KEY)
    print(aipNlp)
    return aipNlp


# def

if __name__ == '__main__':
    APP_ID = '10288634'
    API_KEY = '6lkpB5dBiMCcNRiU5MsPDGYu'
    SECRET_KEY = 'bkFssTaSQjEXPynFIjuytywOIREGzpGI'

    aipNlp = AipNlp(APP_ID, API_KEY, SECRET_KEY)
    # print(aipNlp)
    print(aipNlp.depParser('【九寨沟县地震灾后首个校园应急示范站成立】“高新九寨心连心,震后九寨更美丽。”9月28日下午,由成都高新区志愿者协会党支部'))
    # str1 = '【九寨沟县地震灾后首个校园应急示范站成立】“高新九寨心连心,震后九寨更美丽。”9月28日下午,由成都高新区志愿者协会党支部、成都市义工联合会党支部联合主办的“支援九寨沟县第四小学应急示范站建设暨校园信息建设项目”捐赠仪式在九寨沟县第四小学举行。捐赠活动上,由成都高新区志愿者协会援建'
    # str2 = '【四川表彰九寨沟地震及茂县山体滑坡抢险救灾先进典型丨全名单】“8·8”九寨沟地震及“6·24”茂县特大山体滑坡灾害发生后,在党中央、国务院和四川省委、省政府的坚强领导下,四川省各级党组织和广大共产党员勇于担当、冲锋在前,为抗震抢险救灾作出了重要贡献,涌现出一大批先进典型。'
    # str3 = '【汶川一小入选全国文明校园候选名单】9月27日,记者从中国文明网获悉,中央文明办公示了第一届全国文明校园候选名单。四川省22所学校入选,汶川县第一小学校上榜。记者了解到,创建期内学校领导班子成员有严重违纪、违法事件,有重大校园安全责任事故、重大消防责任事故,有严重违规办学(办班)等问题'
    # str4 = '#抗震救灾气象行动# 【南方大范围强降雨来袭 九寨沟震区有降雨】预计未来四天,贵州、广西及江南西部和北部、江汉、江淮、黄淮等地将先后出现大到暴雨、局地大暴雨,主要降水时段在11日夜间至13日;期间,华北等地将出现多雷阵雨天气。上述部分地区并伴有短时强降水、局地有雷暴大风等强对流天气。请公'
    # result1 = aipNlp.simnet(str1, str3, {'model': 'BOW'})
    # result2 = aipNlp.simnet(str4, str3)
    # print('相关评价', result1['score'])
    # # print('不相关评价', result2['score'])
    # # print('*****')
    # # result3 = myAip().simnet(str1,str3)
    # # print(result3)
Exemplo n.º 12
0
from aip import AipNlp
APP_ID = ''
API_KEY = ''
SECRET_KEY = ''

client = AipNlp(APP_ID, API_KEY, SECRET_KEY)
text = "百度是一家高科技公司"
client.lexer(text)  # 分词,词性标注,专名识别

text = "张飞"
client.depParser(
    text)  # 词语的句法结构信息(如“主谓”、“动宾”、“定中”等结构关系),并用树状结构来表示整句的结构(如“主谓宾”、“定状补”等)

word = "张飞"
client.wordEmbedding(word)  # 中文词向量

text = "床前明月光"
client.dnnlm(text)  # 输出切词结果并给出每个词在句子中的概率值,判断一句话是否符合语言表达习惯。

word1 = "北京"
word2 = "上海"
client.wordSimEmbedding(word1, word2)  # 得到两个词的相似度

text1 = "强大"
text2 = "富强"
client.simnet(text1, text2)

text = "三星电脑电池不给力"
options = {}
options["type"] = 13
client.commentTag(text, options)  # 对包含主观观点信息的文本进行情感极性类别(积极、消极、中性)的判断,并给出相应的置信度