亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > Go語言實(shí)現(xiàn)自動填寫古詩詞實(shí)例代碼

Go語言實(shí)現(xiàn)自動填寫古詩詞實(shí)例代碼

熱門標(biāo)簽:惠州電銷防封電話卡 建造者2地圖標(biāo)注 黃岡人工智能電銷機(jī)器人哪個好 汕頭小型外呼系統(tǒng) 濱州自動電銷機(jī)器人排名 鄭州亮點(diǎn)科技用的什么外呼系統(tǒng) 釘釘有地圖標(biāo)注功能嗎 阿里云ai電話機(jī)器人 浙江高頻外呼系統(tǒng)多少錢一個月

前言

“白日依山盡,___”。下句自然填黃河入海流,那么“日月忽其不淹兮,___,___,恐美人之遲暮”,中間兩句怎么填呢?

最近工作中有個需求,就是1500道語文詩詞填空題沒有答案,現(xiàn)在需要給這些題目大爺們匹配它們對應(yīng)的答案,好在題目信息都很完整,指出了詩詞出處、作者信息。自然想到到網(wǎng)上爬取對應(yīng)文章信息然后字符串匹配答案。目前做完,效果還可以,基本上所有題目的答案都有了,現(xiàn)把操作流程記錄下,做個總結(jié)。

1. 文章信息獲取

網(wǎng)上找了很久,目前發(fā)現(xiàn)百度漢語對古詩詞收錄的比較好,格式也比較規(guī)范,整個爬取過程還是比較簡單,瀏覽器分析網(wǎng)站,找到它們的搜索接口:http://hanyu.baidu.com/hanyu/ajax/sugs只需要傳一個參數(shù):mainkey,是一個urlencode格式的字符串。接口會返回一個匹配列表,再用作者名稱對這個列表做篩選,詳細(xì)代碼如下:

 baseUrl := "http://hanyu.baidu.com/hanyu/ajax/sugs?"
 client := http.Client{
 }
 u, _ := url.Parse(baseUrl)
 q := u.Query()
 q.Set("mainkey", name)
 u.RawQuery = q.Encode()

 //添加Header
 req, _ := http.NewRequest("GET", u.String(), nil)
 req.Header.Add("User-Agent", `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36`)
 req.Header.Add("DNT", "1")
 req.Header.Add("Host", "hanyu.baidu.com")
 req.Header.Add("Accept-Language", "zh-CN,zh;q=0.8")
 req.Header.Add("Referer", "http://hanyu.baidu.com/shici/detail?pid=be520db056da43238035dc18bb1e1798tn=sug_click")
 
 resp, errDo := client.Do(req)

拿到返回值以后,篩選出對應(yīng)的作者信息。

//如果有多個搜索結(jié)果,比對author是否正確
 respJson.ForEach(func(key, value gjson.Result) bool {
 //先看看有沒有display_name
 displayName := value.Get("display_name.0").String()
 sid := value.Get("sid.0").String()
 if len(displayName) == 0 {
 //不是這條記錄
 return true
 }

 //看看type
 typeStr := value.Get("type.0").String()
 if typeStr == "poemline"{
 //取Source
 displayName = value.Get("source_poem.0").String()
 sid = value.Get("source_poem_sid.0").String()
 }

 literatureAuthor := value.Get("literature_author.0").String()
 //author是否一致
 if literatureAuthor == author {
 searchResult.Sid = sid
 searchResult.DisplayName = displayName
 searchResult.Author = literatureAuthor
 return false
 }
 return true // keep iterating
 })

SearchResult保存了搜索到的結(jié)果,根據(jù)sid拿到文章頁面,解析出其中的文章。

func GetContent(sid string) (content string, err error) {
 baseUrl := "http://hanyu.baidu.com/shici/detail"

 result := make([]string, 0, 0)
 client := http.Client{
 }

 u, _ := url.Parse(baseUrl)
 q := u.Query()
 q.Set("pid", sid)
 u.RawQuery = q.Encode()

 req, _ := http.NewRequest("GET", u.String(), nil)
 req.Header.Add("User-Agent", `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36`)
 req.Header.Add("DNT", "1")
 req.Header.Add("Host", "hanyu.baidu.com")
 req.Header.Add("Accept-Language", "zh-CN,zh;q=0.8")
 req.Header.Add("Referer", "http://hanyu.baidu.com/shici/detail?pid=be520db056da43238035dc18bb1e1798tn=sug_click")

 resp, errDo := client.Do(req)

 if errDo != nil || resp.StatusCode != 200 {
 err = errors.New("無法連接百度漢語 " + errDo.Error())
 return
 }

 docm, errDoc := goquery.NewDocumentFromResponse(resp)

 if errDoc != nil {
 err = errors.New("解析Doc錯誤 " + errDoc.Error())
 return
 }

 //詩詞信息都保存在 body_p 的div中,可以通過PuerkitoBio/goquery庫獲取
 pSelect := docm.Find("#body_p")
 pSelect.Each(func(pos int, selection *goquery.Selection) {
 content := strings.TrimSpace(selection.Text())
 result = append(result, content)
 })

 content = strings.Join(result, "")
 return
}

目前會爬取百度漢語、古詩詞兩個網(wǎng)站的數(shù)據(jù),如果有更好的數(shù)據(jù)源,只需要實(shí)現(xiàn)Spider接口,在MapSpiderManifest()方法中注冊即可。

type Spider interface {
 GetContent(SearchResult) (string, error)
 FindContent(string, string) (SearchResult, error)
}

func MapSpiderManifest() map[string]Spider {
 //初始化并且注冊所有的Spider
 spiderMap := make(map[string]Spider)

 //百度
 baiduSpider := new(BaiduSpider)
 spiderMap["baiduSpider"] = baiduSpider

 //古詩文網(wǎng)
 gushiwenSpider := new(GushiwenSpider)
 spiderMap["gushiwenSpider"] = gushiwenSpider
 return spiderMap
}

2.詩詞句子查找

古詩文默寫,以前上學(xué)的時候做的多了,把一句話摳出來,隨機(jī)選其中幾段話讓學(xué)生默寫。一般可以歸類為一下幾種模式:

開頭留空 :_,[_,...],何人不起故園情。
末尾留空:俱往矣,_,[_,...]。
中間留空:月出于東山之上,_,白露橫江,

不管是什么樣的模式,就每個填空處來看,只有它前面或者后面有提示句,我們才能知道這個空的答案是什么。也就是說,這樣的填空可以自主的找到答案,姑且稱之為自主空。而前后都沒有提示句的空,只能等待附近有自主空找到了答案,才能找到它本身的答案,用一個圖說明更加清晰:

圖中灰色的塊因?yàn)橛刑崾揪洌钥梢酝ㄟ^步驟一種爬取下來的文章內(nèi)容找到對應(yīng)的答案,填入Blank中,具體的查找算法如下代碼所示:

//已知newFind的PreString,求BlankString和PostString
func makeWithPreContent(contentsSplit []string, newFind *Find) {
 for l := range contentsSplit {
 if isEqual(contentsSplit[l], newFind.PreString)  l  len(contentsSplit)-1 {
 newFind.BlankString = contentsSplit[l+1]
 if l  len(contentsSplit)-2 {
 newFind.PostString = contentsSplit[l+2]
 }
 newFind.BlankFinish = true
 }
 }
}

//已知newFind的PostString,求BlankString和PreString
func makeWithPostContent(contentsSplit []string, newFind *Find) {
 for l := range contentsSplit {
 if isEqual(contentsSplit[l], newFind.PostString)  l > 0 {
 newFind.BlankString = contentsSplit[l-1]
 if l-1 > 0 {
 newFind.PreString = contentsSplit[l-2]
 }
 newFind.BlankFinish = true
 }
 }
}

// 按標(biāo)點(diǎn)符號分隔內(nèi)容
func SplitByPunctuation(s string) ([]string, []string) {
 regPunctuation, _ := regexp.Compile(`[,,。.??!!;;::]`)
 //匹配標(biāo)點(diǎn)符號,保存下來。 然后分割字符串
 toPun := regPunctuation.FindAllString(s, -1)
 result := regPunctuation.Split(s, -1)

 if len(result[len(result)-1]) == 0 {
 result = result[:len(result)-1]
 }

 //去掉前后空格,去掉引號
 for i := range result {
 result[i] = strings.TrimSpace(result[i])
 regQuoting := regexp.MustCompile("[“”‘'']")
 result[i] = regQuoting.ReplaceAllString(result[i], "")
 }
 return result, toPun
}

所有的自主塊都找到答案后,可以把每個自主塊看作一個雙向鏈表的表頭,我們所要做的就是遍歷每個雙向鏈表,把其中每個節(jié)點(diǎn)的答案都通過查找算法找出來。當(dāng)下一個節(jié)點(diǎn)是NULL,或者下個節(jié)點(diǎn)是一個自主塊時,就停止遍歷,處理下一個雙向鏈表。這樣,無論給出的需要填空的內(nèi)容多么復(fù)雜,都可以順利的完整自動填寫工作。

3.效果

一些常用的文言文或詩詞:

1、 前赤壁賦

2、 離騷


項(xiàng)目地址:AncientPoetryFillBlank (本地下載)

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • go語言實(shí)現(xiàn)通過FTP庫自動上傳web日志

標(biāo)簽:瀘州 滄州 阿壩 昭通 晉中 泰安 駐馬店 東營

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Go語言實(shí)現(xiàn)自動填寫古詩詞實(shí)例代碼》,本文關(guān)鍵詞  語言,實(shí)現(xiàn),自動,填寫,古詩詞,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Go語言實(shí)現(xiàn)自動填寫古詩詞實(shí)例代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于Go語言實(shí)現(xiàn)自動填寫古詩詞實(shí)例代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美大片毛片aaa免费看| 一级毛片视频在线观看| 青青青草视频在线观看| 高清一级做a爱过程不卡视频| 日日日夜夜操| 日韩在线观看视频网站| 国产91素人搭讪系列天堂| 香蕉视频一级| 精品在线视频播放| 青青青草影院| 人人干人人草| 成人a级高清视频在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 亚洲女初尝黑人巨高清在线观看| 久久国产一区二区| 色综合久久天天综合绕观看| 国产亚洲男人的天堂在线观看| 成人免费观看视频| 国产不卡精品一区二区三区| 高清一级毛片一本到免费观看| 国产亚洲男人的天堂在线观看| 日本伦理片网站| 一级女性大黄生活片免费| 日本免费看视频| 久久国产精品永久免费网站| 色综合久久久久综合体桃花网| 韩国毛片 免费| 韩国三级香港三级日本三级la| 欧美一级视频免费| 黄色免费网站在线| 免费一级片网站| 亚洲女人国产香蕉久久精品| 欧美激情一区二区三区视频高清| 色综合久久手机在线| 日本在线不卡免费视频一区| 精品国产一区二区三区国产馆| 久久国产精品只做精品| 麻豆污视频| 久久久成人影院| 国产美女在线观看| 国产美女在线一区二区三区| 九九久久国产精品大片| 日韩免费在线观看视频| 久久久久久久免费视频| 国产91精品露脸国语对白| 韩国三级视频网站| 国产成+人+综合+亚洲不卡| 中文字幕一区二区三区精彩视频 | 久久99这里只有精品国产| 亚洲精品影院| 精品视频在线观看一区二区 | 国产一级生活片| 日韩字幕在线| 国产高清在线精品一区a| 美国一区二区三区| 日韩中文字幕一区| 日韩字幕在线| 国产麻豆精品免费密入口| 日韩中文字幕一区| 成人影视在线观看| 中文字幕一区二区三区 精品| 国产视频一区二区在线播放| 精品国产一区二区三区久| 国产a视频| 精品在线观看国产| 欧美国产日韩一区二区三区| 欧美激情中文字幕一区二区| 欧美激情伊人| 高清一级毛片一本到免费观看| 毛片成人永久免费视频| 青青久久网| 欧美激情一区二区三区在线| 天天色成人| 欧美激情一区二区三区在线播放| 99久久精品国产麻豆| 91麻豆精品国产自产在线观看一区| 久久精品免视看国产成人2021| 精品国产香蕉伊思人在线又爽又黄| 亚洲 男人 天堂| 一级毛片看真人在线视频| 精品国产亚一区二区三区| 亚洲天堂一区二区三区四区| 日韩字幕在线| 你懂的国产精品| 四虎久久影院| 成人高清视频免费观看| 国产精品自拍在线观看| 精品久久久久久综合网| 天天做日日爱| 日韩av片免费播放| 精品在线视频播放| 日韩免费在线观看视频| 国产成人精品在线| 黄色福利| 国产高清视频免费| 91麻豆精品国产片在线观看| 人人干人人草| 你懂的福利视频| 精品国产一区二区三区久| 国产一区二区精品| 色综合久久天天综合观看| 久久国产一区二区| 欧美另类videosbestsex高清| 亚久久伊人精品青青草原2020| 亚洲 国产精品 日韩| 午夜欧美福利| a级毛片免费观看网站| 欧美大片aaaa一级毛片| 色综合久久天天综合绕观看| 久久成人综合网| 韩国毛片免费大片| 你懂的福利视频| 国产不卡精品一区二区三区| 久久福利影视| 欧美a级成人淫片免费看| 精品久久久久久中文字幕一区| 国产视频网站在线观看| 午夜在线影院| 99色视频在线| 国产成人精品影视| 久久久成人网| 亚洲 激情| 日本在线播放一区| 国产a网| 麻豆网站在线看| 韩国妈妈的朋友在线播放| 欧美a级片视频| 精品视频在线观看免费| 国产视频一区二区在线播放| 精品久久久久久中文字幕一区| 国产精品自拍在线观看| 精品国产一区二区三区精东影业 | 国产91素人搭讪系列天堂| 精品国产三级a∨在线观看| 精品久久久久久中文| 久久国产精品只做精品| 国产视频一区二区在线播放| 欧美激情一区二区三区在线| 国产精品123| 久久久久久久久综合影视网| 精品国产一区二区三区久| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日本特黄一级| 日本在线www| 色综合久久天天综线观看| 精品国产一区二区三区免费| 国产成人精品影视| 日本在线播放一区| 久草免费在线观看| 一级片片| 亚洲天堂免费观看| 国产福利免费视频| 成人高清视频在线观看| 欧美另类videosbestsex视频| 久久国产影院| 国产伦久视频免费观看视频| 青草国产在线| 一本伊大人香蕉高清在线观看| 一级毛片视频免费| 国产成人精品综合久久久| 亚洲精品久久久中文字| 欧美激情一区二区三区视频 | 四虎影视久久久| 尤物视频网站在线| 日韩欧美一二三区| 九九免费高清在线观看视频| 国产成人啪精品| 国产不卡在线观看视频| 免费的黄色小视频| 日韩在线观看视频免费| 韩国三级香港三级日本三级| 欧美另类videosbestsex高清| 国产综合91天堂亚洲国产| 久久精品人人做人人爽97| 九九免费精品视频| 日韩av成人| 欧美18性精品| 麻豆系列国产剧在线观看| 999久久久免费精品国产牛牛| 欧美日本免费| 韩国妈妈的朋友在线播放| 国产激情视频在线观看| 韩国三级香港三级日本三级| 可以在线看黄的网站| 999久久66久6只有精品| 国产精品免费久久| 国产一区二区精品在线观看| 青青青草影院| 免费国产在线观看| 日韩中文字幕一区| 国产成人精品影视| 亚洲精品中文字幕久久久久久| 欧美另类videosbestsex视频| 日本伦理片网站| 国产一区二区精品| 韩国三级视频在线观看| 免费的黄视频| 欧美另类videosbestsex高清| 四虎影视库| 91麻豆tv|