基于知识图谱的问答系统(protege,jena,jieba分词的结合)

人工智能70

一个简单的问答系统,只不过这其中的构建过程是基于知识图谱。主要的使用的工具(AKA,重点)有protégé(用于知识图谱的建模)、jena数据库(其为一个基于三元组的图数据库,用于完成知识图谱的存储)、Python中的应用程序框架Streamlit与jieba分词库。(需要额外安装的环境:jena数据库,了解明白SPARQL语句,对分词有初步掌握)

配图均已寝室知识图谱的构建为例。

知识图谱的建模

使用protégé 进行图谱的构建之前,首先对于知识图谱的理论有一定的掌握。知识图谱中最为关键的即为RDF三元组, 概念 —— 实体 —— 关系。在我们开始构建知识图谱之前,需要一步步地完成如下内容。

类(概念),又被称为类别(type),类(class,category)。依据上次作业对分析的问题进行概念化得到一类有着相同描述的模板。

基于知识图谱的问答系统(protege,jena,jieba分词的结合)

关系(Relation),关系可以认为是一类特殊的属性,当实体的某个属性也是一个实体时,整个属性实质上就是关系。完成关系的定义之后,要为关系增添描述(如家乡关系,则其主体为人,客体为地点)

基于知识图谱的问答系统(protege,jena,jieba分词的结合)

实体的属性(Property),属性描述实体某方面的特性,比如人的出生日期,身高,体重,属性是人们认知世界,描述世界的基础。

基于知识图谱的问答系统(protege,jena,jieba分词的结合)

与类的实例化(实体,实体有时也会被称作对象(object)或实例(instance)。实体是属性赖以生存的基础,其必须是自在的,独立的,不依附与其他东西而存在的。)的创建。

基于知识图谱的问答系统(protege,jena,jieba分词的结合)

最终为这些实体与实体之间添加关系的断言,添加概念与实体之间的实例。并用 protégé 内置的可视化工具进行展示。每个实例详细的信息(如,属性,关系等)通过点击即可查看。

基于知识图谱的问答系统(protege,jena,jieba分词的结合)

知识图谱的存储

构建好基于RDF三元组的知识图谱之后,在将上文中所说的知识图谱保存为OWL守望先锋联赛格式,>灬

Original: https://blog.csdn.net/M1170780140/article/details/122075208
Author: 美剧之神
Title: 基于知识图谱的问答系统(protege,jena,jieba分词的结合)



相关阅读1

Title: 免费将中文视频转换为英文视频并添加中英双语字幕

  • 第二步,识别出音频中的中文。这里使用到了百度智能云中的音频文件转写功能。所以首先需要先注册个账号并完成个人认证,百度智能云链接如下:https://cloud.baidu.com/
    注意:使用该功能可以通过领取免费资源来获得免费时长,领取的资源有时效和总时长限制,通过https://console.bce.baidu.com/ai/#/ai/speech/overview/index此链接获取:
    基于知识图谱的问答系统(protege,jena,jieba分词的结合) 注册并登录后打开音频文件转写链接:https://cloud.baidu.com/doc/SPEECH/s/Bk5difx04 基于知识图谱的问答系统(protege,jena,jieba分词的结合) 通过概述的三个接入步骤可以知道主要为: 创建具有音频转写功能的应用→通过该应用的AppID、API Key、Secret Key来获取token→通过token和音频链接创建音频转写任务→查询转写任务的识别结果。
    代码如下:

  • 获取token

import requests
import json

API_key = "你创建应用的API Key"
secret_key = "你创建应用的Secret Key"
access_token_url = f"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={API_key}&client_secret={secret_key}"
response = requests.get(access_token_url)
print(response.json())
access_token = response.json()["access_token"]
  1. 创建音频转写任务(音频可使用百度云对象存储进行音频存储)
post_url = "https://aip.baidubce.com/rpc/2.0/aasr/v1/create"
file_url = "你的音频文件的url"
body = {
    "speech_url": file_url,
    "format": "mp3",
    "pid": 1537,
    "rate": 16000,
}
token = {"access_token": access_token}

rep = requests.post(post_url, params=token, data=json.dumps(body))
print(rep.json())
task_id = rep.json()["task_id"]
  1. 查询转写任务结果
query_url = "https://aip.baidubce.com/rpc/2.0/aasr/v1/query"
query_body = {
    "task_ids": [task_id]
}

rep = requests.post(query_url, params=token, data=json.dumps(query_body))
print(json.dumps(rep.json()))
word = rep.json()["tasks_info"]["task_result"]["result"]
  • 第四步,根据英文合成英文语音。这里用到有道智云AI开放平台。类似百度智能云平台,这里也需要注册,链接如下:https://ai.youdao.com。首次注册会赠送一些资源的时长,包括语音合成的。
    注册并登录后,找到语音合成功能的页面:https://ai.youdao.com/product-tts.s
    类似百度平台一样,创建应用并勾选 语音合成
    基于知识图谱的问答系统(protege,jena,jieba分词的结合)
    找到技术文档:产品文档-语音合成TTS服务
    把Python3的示例拷下来并修改对应的内容: 基于知识图谱的问答系统(protege,jena,jieba分词的结合) 执行语音合成:
import sys
import uuid
import requests
import hashlib
import time

YOUDAO_URL = 'https://openapi.youdao.com/ttsapi'
APP_KEY = '你的的应用ID'
APP_SECRET = '你的应用密钥'

def encrypt(signStr):
    hash_algorithm = hashlib.md5()
    hash_algorithm.update(signStr.encode('utf-8'))
    return hash_algorithm.hexdigest()

def truncate(q):
    if q is None:
        return None
    size = len(q)
    return q if size  20 else q[0:10] + str(size) + q[size - 10:size]

def do_request(data):
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    return requests.post(YOUDAO_URL, data=data, headers=headers)

def connect():
    q = "你要合成的英文."
    name = "保存的文件名"
    data = {}
    data['langType'] = 'en'
    salt = str(uuid.uuid1())
    signStr = APP_KEY + q + salt + APP_SECRET
    sign = encrypt(signStr)
    data['appKey'] = APP_KEY
    data['q'] = q
    data['salt'] = salt
    data['sign'] = sign
    data['speed'] = 1

    response = do_request(data)
    contentType = response.headers['Content-Type']
    if contentType == "audio/mp3":
        print("成功")
        millis = int(round(time.time() * 1000))
        filePath = name + str(millis) + ".mp3"
        fo = open(filePath, 'wb')
        fo.write(response.content)
        fo.close()
    else:
        print("类型错误", response.content)

if __name__ == '__main__':
    connect()

执行完成后将生成mp3文件

Original: https://blog.csdn.net/w77775292/article/details/123079471
Author: leviswong_
Title: 免费将中文视频转换为英文视频并添加中英双语字幕

相关阅读2

Title: Anaconda镜像安装tensorflow-gpu与Keras,与GPU版pytorch (Windows系统)

目录

一、 Anaconda镜像安装GPU版pytorch

1.1 安装 Anaconda环境管理工具

直接官网下载或者参考下面

Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。装anaconda,就不需要单独装python了。
anaconda优点:

优点

1、anaconda里面集成了很多关于python科学计算的第三方库,主要是安装方便,而python是一个编译器,如果不使用anaconda,那么安装起来会比较痛苦,各个库之间的依赖性就很难连接的很好。

2、常见的科学计算类的库都包含在里面了,使得安装比常规python安装要容易。

参考下载地址:anaconda安装-超详细版或者直接官网下载(注意 勾选add path 省去配置系统环境变量),我们可以直接测试:

输入:conda --version ,——查看是否有conda环境

1.2 pytorch环境安装固定步骤

1.3. 导入镜像包

Anaconda 镜像使用帮助
Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。

Anaconda 安装包可以到 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 下载。

TUNA 还提供了 Anaconda 仓库与第三方源(conda-forge、msys2、pytorch等,查看完整列表)的镜像,各系统都可以通过修改用户目录下的 .condarc 文件。Windows 用户无法直接创建名为 .condarc 的文件,可先执行 conda config --set show_channel_urls yes 生成该文件之后再修改。

注:由于更新过快难以同步,我们不同步pytorch-nightly, pytorch-nightly-cpu, ignite-nightly这三个包。

更新清华源镜像官方操作参考地址

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro/

Conda - Downloaded bytes did not match Content-Length 问题解决方案:参考解决方案

1.4. 创建Python环境

在Anaconda Prompt 管理运行:

conda create -n  xxxx python=3.6/3.7/3.8/3.9

代表创建一个python=3.6/3.7/3.8/3.9的环境,我们把它命名为xxx

2.激活环境

conda activate xxx

激活环境,方便在该环境中安装库

3. conda安装pytorch-GPU 与对应版本的cuda,cudnn

3.1. 查看本机的cuda版本:执行命令 nivdia-smi

基于知识图谱的问答系统(protege,jena,jieba分词的结合)
上图可见cuda版本是11.6,记住这个版本,后续需要 根据你的cuda版本去选择合适的安装命令

如果电脑没有安装cuda,需要重新去英伟达官网下载cuda驱动。具体可参考:cuda下载与安装

; 3.2 . 安装适配的pytorch cuda torchvision 三个同时conda

配置:win 10或Ubuntu 下都通用 , 假设 python=3.6

pytorch cuda torchvision 三个版本需要匹配的,对于pytorch 和torchvision,最简便的方法当然是去 pytorch官网按照给定配置自动生成的下载链接了Pytorch官网地址,这样的版本都是匹配的。
基于知识图谱的问答系统(protege,jena,jieba分词的结合)
这上面的命令: conda install pytorch torchvision torchaudio cudatoolkit=11.6 -c pytorch -c conda-forge
已经代表了需要下载的pytorch cuda torchvision 三个包及适配版本。

( 可去除-c pytorch可切换至镜像安装,避免安装中断或时间过长 )
直接执行适配的cuda==11.6

conda install pytorch torchvision torchaudio cudatoolkit=11.6 -c conda-forge

安装时间按可能有点长(一般是向下兼容的cuda版本,最好选择与本机cuda驱动相同的)。

; 3. 3. 检测是否安装成功

执行下面命令:

python
import torch
print(torch.__version__)           #输出Pytorch的版本
print(torch.cuda.is_available())   #看看能否正常调用CUDA(yes)

如果检测不到cuda正常调度

nvcc -V / nivdia-smi 查看 cuda 版本

  1. 首先确定 显卡是否支持CUDA,https://www.geforce.com/hardware/technology/cuda/supported-gpus,一般有显卡的均可。
  2. 确保 驱动升级到最新(确保驱动与cuda版本互相支持),所以必须选择你本机的cuda版本。
  3. 进入选择你要的版本进行(cu10.0)torch+torchvision(0.3) 版本需要对应[离线下载pip安装]
  4. 可能是没有启动驱动NVIDA设置,或者系统没有下载驱动设备。(下载360驱动大师)

3.4. 安装各类需求包

缺啥补啥:最好实在cmd管理命令中安装: pip install xxx , 或者在pycharm终端执行,前提是切换到你的环境。

二. Anaconda镜像安装tensorflow-gpu1.14及Keras超详细版

安装tensorflow-gpu1.14及Keras(参考该博主)超级详细的过程在链接中。

下载安装好了cuda10.0,与对应版本cudnn 7.6.4:
基于知识图谱的问答系统(protege,jena,jieba分词的结合)
下载安装好后,需要在环境变量中添加路径。
PATH中手动添加:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\libnvvp
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64
前两个一般安装好CUDA后会自动配置好,后两个需要手动添加

注意:若没有显卡驱动,需要先到英伟达官网下载最新的显卡驱动,或者下载360驱动大师,建议后者快。

Original: https://blog.csdn.net/weixin_44790306/article/details/121593538
Author: HSR CatcousCherishes
Title: Anaconda镜像安装tensorflow-gpu与Keras,与GPU版pytorch (Windows系统)

相关阅读3

Title: maix_train本地训练出现“Failed to get convolution algorithm”的解决方法

使用sipeed提供的maix_train进行k210本地模型训练的时候,出现了以下问题

2022-01-29 21:31:49,805 - [ERROR]: failed: TrainFailReason.ERROR_INTERNAL, error occurred when train, error: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.

查找之前的log信息会发现以下错误

Function call stack:
train_function

同时,

2022-01-29 21:31:49.794489: E tensorflow/stream_executor/cuda/cuda_dnn.cc:328] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

经过查找发现这个报错是由于显存不足引起,可以直接在文件中加入如下代码,让tensorflow自动进行显存分配

from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)

于是寻找到出现报错的 train_function
这个函数在Train类中的classify和detect部分都有各自的实现,找到 __init__两个文件搜索train不难找到
train/classifier/__init__.pytrain/detector/__init__.py中的两个train()函数,在import语句后加入上述代码,再次进行训练,发现classify任务可以正常运行,但detect任务出现报错

2022-01-30 00:50:25,990 - [ERROR]: train error: The Session graph is empty. Add operations to the graph before calling run().

2022-01-30 00:50:25,991 - [ERROR]: failed: TrainFailReason.ERROR_INTERNAL, error occurred when train, error: The Session graph is empty. Add operations to the graph before calling run().

将之前在detector目录下 __init__.py中添加的代码改为

from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession
config = ConfigProto()
config.gpu_options.allow_growth = True
session = tf.compat.v1.Session(config=config)

也就是把 InteractiveSession改成 Session
再次运行detect任务,问题解决

推测出现bug的原因是新版本tensorflow对旧版本适配不完善
本例配置如下:
Nvidia RTX2060
cuda 10.1 + cudnn
tensorflow 2.3.0

在StackOverFlow下面有老哥指出

Try to set:
os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'
solved my problem
my environment:
Cudnn 7.6.5
Tensorflow 2.4
Cuda Toolkit 10.1
RTX 2060

但是在笔者最早的尝试中未奏效,但是后续在Windows系统下复现时尝试使用之前的代码修复后仍无法使用,换用了上面这个代码,相关选段如下

import os
os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'

成功解决了问题。
推测这个bug与Linux下的bug成因不同,是由于Windows下对显存访问的管理而出现,而不是tensorflow的兼容性问题

Original: https://blog.csdn.net/qq_40500005/article/details/122748228
Author: 内 鬼
Title: maix_train本地训练出现“Failed to get convolution algorithm”的解决方法