在学习transfar 库模型时,看到一类Table Question Answering 模型,不清楚怎样用,就简单网上找了资料,网上一般都是论文,也没有时间仔细研究,就看到这个项目,不错先有个感性认识。
表QA
在表格数据上查询自然语言的工具,如csv,excel表格等
功能
- 支持从多个CSV进行检测
- 支持FuzzyString实现。i、 e、查询中不完整的csv值可以自动检测并填充到查询中。在
- 开放域名,无需培训。在
- 为自定义体验添加手动架构
- 在未提供架构的情况下自动生成架构
- 数据可视化
配置:
通过PIP安装:
pip install tableqa
从源安装:
git clone https://github.com/abhijithneilabraham/tableQA
cd tableqa
python setup.py install
快速启动
执行示例查询
from tableqa.agent import Agent
agent=Agent(df) #input your dataframe
response=agent.query_db("Your question here")
print(response)
从问题中获取SQL查询
^{pr2}$
添加手动模式
模式格式:
{
"name": DATABASE NAME,
"keywords":[DATABASE KEYWORDS],
"columns":
[
{
"name": COLUMN 1 NAME,
"mapping":{
CATEGORY 1: [CATEGORY 1 KEYWORDS],
CATEGORY 2: [CATEGORY 2 KEYWORDS]
}
},
{
"name": COLUMN 2 NAME,
"keywords": [COLUMN 2 KEYWORDS]
},
{
"name": "COLUMN 3 NAME",
"keywords": [COLUMN 3 KEYWORDS],
"summable":"True"
}
]
}
- 映射适用于那些值只有几个不同类的列。在
- 只包括需要有手动关键字或映射.Rest将自动生成。在
summable
包含在数值类型列中,这些列的值已经是计数表示。例如,Death Count,Cases
等包含已经表示计数的值。在
示例(使用手动模式):
数据库查询
from tableqa.agent import Agent
agent=Agent(df,schema) #pass the dataframe and schema objects
response=agent.query_db("how many people died of stomach cancer in 2011")
print(response)
#Response =[(22,)]
SQL查询
sql=agent.get_query("How many people died of stomach cancer in 2011")
print(sql)
#sql query: SELECT SUM(Death_Count) FROM cancer_death WHERE Cancer_site = "Stomach" AND Year = "2011"
多个CSV
分别传递包含csv和schema的目录的绝对路径。请参考cleaned_data和schema以获取示例。在
示例
csv_path="/content/tableQA/tableqa/cleaned_data"
schema_path="/content/tableQA/tableqa/schema"
agent=Agent(csv_path,schema_path)