from nltk import load_parser cp = load_parser('grammars/book_grammars/sql0.fcfg') query = 'What cities are located in China' trees = list(cp.parse(query.split())) answer = trees[0].label()['SEM'] answer = [s for s in answer if s] q = ' '.join(answer) print(q) from nltk.sem import chat80 rows = chat80.sql_query('corpora/city_database/city.db', q) for r in rows: print(r[0], " ") ##命题逻辑 nltk.boolean_ops() read_expr = nltk.sem.Expression.fromstring read_expr('-(P & Q)') read_expr('P & Q') read_expr('P | (R -> Q)') read_expr('P <-> -- P') lp = nltk.sem.Expression.fromstring SnF = read_expr('SnF') NotFnS = read_expr('-FnS') R = read_expr('SnF -> -FnS') prover = nltk.Prover9()
"""语义分析""" import nltk from nltk import word_tokenize, pos_tag from nltk.corpus import conll2002, brown from nltk.corpus import wordnet as wn out = nltk.boolean_ops() input_expr = nltk.sem.Expression.fromstring out = input_expr('X|(Y->Z)') out = input_expr('-(X & Y)') out = input_expr('X & Y') out = input_expr('X <-> -- X') out = nltk.Valuation([('X', True), ('Y', False), ('Z', True)]) print(out['Z']) print(out) expression = input_expr('run(marcus)', type_check=True) print(expression.argument) print(expression.argument.type) print(expression.function) print(expression.function.type) sign = {'run': '<e, t>'} expression = input_expr('run(marcus)', signature=sign) print(expression.function.type) nltk.data.show_cfg('grammars/book_grammars/sql1.fcfg') """命名实体识别(英语:Named Entity Recognition,简称NER) 指识别文本中具有特定意义的实体 参考wiki https://baike.baidu.com/item/命名 https://zh.wikipedia.org/zh-cn/实体 https://baike.baidu.com/item/%E5%91%BD%E5%90%8D%E5%AE%9E%E4%BD%93 命名:指给予名称;定名。
import nltk nltk.boolean_ops()
print(query_sql) # 1.2 自然语言、语义和逻辑 # 语义的基本概念: # 1)在确定的情况下,陈述句非真即假 # 2)名词短语和专有名词的定义指的世界上的东西 # 语句集W的模型是某种规范化表示,其中W中的所有句子都为真。表示模型的方式通常基于集合论。 # 模型用于评估英语句子的真假,并用这种方式来说明表示意思的一些方法 # 2. 命题逻辑 # 设计一种逻辑语言的目的是使推理更加明确规范。 # 命题逻辑只表示对应的特定语句连接词的语言结构部分。 # 命题逻辑形式中,连接词的对应形式叫做布尔运算符。 # 命题逻辑的基本表达式是命题符号。通常写作P、Q、R等 # 有了命题符号和布尔运算符,可以建立命题逻辑的规范公式的无限集合(简称公式) print(nltk.boolean_ops()) # LogicParser()将逻辑表达式分析成表达式的各种子类 read_expr = nltk.sem.Expression.fromstring print(read_expr('-(P&Q)')) print(read_expr('P&Q')) print(read_expr('P|(R->Q)')) print(read_expr('P<->--P')) # 从计算的角度看,逻辑是进行推理的重要工具。从假设一步步捡到结论,被称为推理。 # 有效的论证:所有的前提为真时,结论都为真的论证 read_expr = nltk.sem.Expression.fromstring SnF = read_expr('SnF') NotFns = read_expr('-FnS') R = read_expr('SnF-> -FnS') prover = nltk.Prover9()