自己想象的人工智慧 最簡單的問題建議程式

2021-06-06 05:35:06 字數 3452 閱讀 3604

# coding=gbk

# -*- coding:utf8 -*-

def u(str):

""" 僅用來轉換utf-8編碼的 """

return str.decode("gbk")

def recognize_one_token(str, dictionary):

""" 輸入一句話,匹配第乙個詞,並返回詞結尾的位置 """

print str

if len(str) == 0:

return 0

elif str in dictionary:

return len(str)

else:

return recognize_one_token(str[0:-1], dictionary)

def tokenize(str, dictionary):

if len(str) == 0:

return

i = recognize_one_token(str, dictionary)

if i == 0:

return tokenize(str[1:], dictionary)

else:

if len(str) == i:

return [str[0:i]] # 避免超界

else:

return [str[0:i]] + tokenize(str[i:], dictionary)

def parse(str):

""" str引數需要unicode編碼的 """

""" 1. 分詞 (2. 暫時未建立語法結構, 僅以list方式返回分詞結果) """

# 1. 建立用來分詞的詞典

dictionary = map(u, ['十七樓', '我', '我要去', '有什麼建議嗎', '二十樓', '三十樓'])

# 2. 匹配分詞(從前往後,最大化匹配)

return tokenize(str, dictionary)

class literal:

def __init__(self, stringval):

self.m_stringval = stringval

def content(self):

return self.m_stringval

def match(self, condition):

return self.content() == condition

class when(literal):

def __init__(self, timestring):

literal.__init__(self, timestring)

class where(literal):

def __init__(self, placestring):

literal.__init__(self, placestring)

class who(literal):

def __init__(self, namestring):

literal.__init__(self, namestring)

class cause(literal):

def __init__(self, causestring):

literal.__init__(self, causestring)

class course(literal):

def __init__(self, coursestring):

literal.__init__(self, coursestring)

class result(literal):

def __init__(self, resultstring):

literal.__init__(self, resultstring)

class fact:

""" 6要素方式的模型,其實未必合適,主要是cause, course, result可能需要分得更細 """

def __init__(self, when, where, who, cause, course, result):

self.m_when = when

self.m_where = where

self.m_who = who

self.m_cause = cause

self.m_course = course

self.m_result = result

def when(self):

return self.m_when

def where(self):

return self.m_where

def who(self):

return self.m_who

def cause(self):

return self.m_cause

def course(self):

return self.m_course

def result(self):

return self.m_result

class query:

def __init__(self, question, facts):

self.m_question = question # 問題文字

self.m_tokens = parse(question) # 對問題文字進行解析

self.m_facts = facts # 事實庫

def answer(self):

""" 理解問題,並搜尋fact,並生成自然的答案 """

# 基本思路,從前往後掃瞄語法樹,對照事實上下文理解語義,並給出答案

# 應當是乙個狀態機,0: 初始,1: 地點意願

state = 0

result =

for eachtoken in self.m_tokens:

if u("我要去") == eachtoken:

state = 1

elif state == 1:

# 搜尋facts, 匹配地點

for eachfact in self.m_facts:

if eachfact.where() == eachtoken:

else:

pass

return result

if __name__ == '__main__':

""" 測試** """

facts = [fact(u("4月17號"), u("十七樓"), u("我"), u("需要錢"), u("找張三借10塊錢"), u("張三借給了我"))]

q = query(u("我要去二十樓"), facts)

for f in q.answer():

print f.when(), f.where(), f.who(), f.cause(), f.course(), f.result()

我的人工智慧之旅 偏斜類問題

正樣本數佔樣本總數的比例極小時,容易出現偏斜類問題。例如癌症測試。樣本集合中僅有0.5 的癌症樣本,99.5 的正常樣本。通過某一假設函式後,得到1 為癌症患者,99 為正常樣本。雖然總的正確率高達99 但假設函式並不理想。因為,我們的目的是為了,檢測出是否得癌。這時候,如果將99 的準確率提公升至...

人工智慧發展的要素是什麼,人工智慧市場的人才現狀

中國已成為全球人工智慧的發展中心之一,但面臨著巨大的人才缺口,隨著越來越多的高科技公司開設機械人或者人工智慧業務分部,人工智慧或機器學習類專業人才正在變得炙手可熱,人才 也是水漲船高。甚至在矽谷,剛畢業的人工智慧領域博士能拿到超過百萬美元的年薪。目前國內人工智慧相關技術崗位,主流年薪也在30 60萬...

當醫療遇上人工智慧的無線想象

還記得去年cctv1 機智過人 節目中,人工智慧閱片機械人 啄醫生 嗎?它單挑15名經驗豐富的主任醫師。結果,這些來自全國三甲醫院 平均閱齡20年 閱片量超過20萬張的頂級醫生,都被一一挑落馬下。啄醫生 對30套肺片精準檢測完勝。智慧型醫療 ai被稱為 第四次工業革命 全球頂尖的技術公司都在搶占攤頭...