成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

python實(shí)現(xiàn)在線分詞

Simon_Zhou / 2186人閱讀

摘要:寫(xiě)在前面最近在優(yōu)化網(wǎng)站的搜索部分,網(wǎng)站是用實(shí)現(xiàn)的,主要業(yè)務(wù)是在線視頻教育網(wǎng)站,之前搜索只是一段模型中的模糊匹配,所以只能搜索關(guān)鍵字,但是突然又想在網(wǎng)站做個(gè)類似于百度問(wèn)答的功能。篩選出大于概率的詞至此實(shí)現(xiàn)簡(jiǎn)單分詞就寫(xiě)完了。

寫(xiě)在前面

最近在優(yōu)化網(wǎng)站的搜索部分,網(wǎng)站是用Django實(shí)現(xiàn)的,主要業(yè)務(wù)是在線視頻教育網(wǎng)站,之前搜索只是一段Django ORM模型中的icontains模糊匹配,所以只能搜索關(guān)鍵字,但是CEO(SB)突然又想在網(wǎng)站做個(gè)類似于百度問(wèn)答的功能。但是搜索問(wèn)題就成了一個(gè)棘手的事情,原有搜索不能滿足需求,但是調(diào)研相關(guān)的elasticsearch之類的全文檢索又有點(diǎn)重(除了有點(diǎn)重,主要是CEO不給時(shí)間??!),所以就把精力放在了分詞上,能短平快的實(shí)現(xiàn)該功能,而且比較輕。

因?yàn)殛P(guān)注的梁博,自然而然想到了他博士期間寫(xiě)的在線分詞pullword(寫(xiě)這篇文章時(shí)他個(gè)人網(wǎng)站又掛掉了,哈哈哈,這里貼出了他的微博供大家膜拜),在此對(duì)梁博表示感謝??!

下面是我寫(xiě)的分詞的utils,不過(guò)梁博的分詞現(xiàn)在只能支持中文,輸入英文跟數(shù)字會(huì)返回error,之前是想調(diào)用梁博的原有的pullword,他的API地址,但是我測(cè)了一下需要6-7秒,對(duì)于網(wǎng)站搜索功能顯然沒(méi)辦法使用,后來(lái)又找到他掛在百度的免費(fèi)API,測(cè)試了一下數(shù)據(jù)返回在0.1秒左右,還不錯(cuò),就使用了百度api。

要注意,他原生的api中有個(gè)param1的參數(shù),表示選詞概率,param1=0.8表示只出概率在0.8以上的詞,但是我調(diào)用傳參的時(shí)候不好用,所以就通過(guò)返回的數(shù)據(jù)自己寫(xiě)了篩選。
get_pullword需要兩個(gè)參數(shù),第一個(gè)是一段需要分詞的話,第二個(gè)是篩選分詞后選詞概率,[0,1]區(qū)間,等同于他的param1的參數(shù)。

# coding: utf-8
__author__ = "flyingpang"
import requests
import datetime


def get_pullword(s, probability):
    """
    :param s: 一段需要分詞的中文.
    :param probability: 選詞概率.
    :return: 按照概率從大到小排序返回一個(gè)list.
    """
    headers = {"apikey": "你自己的百度apikey"}
    url = "http://apis.baidu.com/apistore/pullword/words"
    params = {"source": s, "param1": "0", "param2": "1"}
    r = requests.get(url=url, headers=headers, params=params)

    if r.status_code != 200 or r.content.strip().split("
")[0].startswith("error"):
        result = list()
        result.append(s)
        return result
    else:
        data = r.content.strip().split("
")
        return split_word(data, probability)


def split_word(words, probability=0):
    """
    :param words: 分詞結(jié)果的字典, 其中key為分詞,value為概率.
    :param probability: 最小分詞概率
    :return: 概率從大到小的分詞列表.
    """
    # 分詞跟相關(guān)概率保存到字典中.
    d = dict()

    for i in words:
        m = i.split(":")
        d[m[0].decode("utf-8")] = float(m[1])

    m = sorted(d.iteritems(), key=lambda k: k[1], reverse=True)
    words_list = []
    for i in range(len(m)):
        if m[i][1] >= probability:
            words_list.append(m[i][0])
    return words_list

if __name__ == "__main__":
    source = u"清華大學(xué)是好學(xué)校"
    t1 = datetime.datetime.now()
    test = get_pullword(source, 0.8)
    t2 = datetime.datetime.now()
    print "total time", t2 - t1
    print test

因?yàn)槲液蠖耸褂肈iango的icontains來(lái)匹配,所以返回一個(gè)list的話沒(méi)辦法匹配,所以這里給出一個(gè)Django處理的方法。

query = self.request.GET.get("q", None)
pull_words = get_pullword(query, 0.8)  # 篩選出大于0.8概率的詞
query_list = reduce(operator.or_, (Q(title__icontains=item) for item in pull_words))
question_list = Question.objects.filter(query_list).order_by("-id")

至此python實(shí)現(xiàn)簡(jiǎn)單分詞就寫(xiě)完了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44290.html

相關(guān)文章

  • Python 提取《釜山行》人物關(guān)系

    摘要:項(xiàng)目代碼下載地址基于共現(xiàn)提取釜山行人物關(guān)系更多經(jīng)典項(xiàng)目全部項(xiàng)目 項(xiàng)目簡(jiǎn)介:本項(xiàng)目將帶大家使用 Python 提取《釜山行》人物關(guān)系,對(duì)于給定的劇本文本,通過(guò)分析文本中人物的共現(xiàn)關(guān)系,提取整個(gè)文本表示的人物關(guān)系,并將人物關(guān)系可視化表示。本項(xiàng)目教程由Forec發(fā)布在實(shí)驗(yàn)樓。 一、項(xiàng)目介紹 1. 內(nèi)容簡(jiǎn)介 《釜山行》是一部喪尸災(zāi)難片,其人物少、關(guān)系簡(jiǎn)單,非常適合我們學(xué)習(xí)文本處理。這個(gè)項(xiàng)目將介...

    hoohack 評(píng)論0 收藏0
  • python 實(shí)現(xiàn)中文分詞統(tǒng)計(jì)

    摘要:利用我們集成的目前世界上規(guī)模最大的人工分詞和詞性標(biāo)注中文語(yǔ)料庫(kù)約含萬(wàn)字訓(xùn)練而成,模型標(biāo)注能力強(qiáng)大。據(jù)說(shuō)是最好的中文分詞組件,支持等多種語(yǔ)言。 總是看到別人用Python搞各種統(tǒng)計(jì),前端菜鳥(niǎo)的我也來(lái)嘗試了一把。有各種語(yǔ)義分析庫(kù)在,一切好像并不是很復(fù)雜。不過(guò)Python剛開(kāi)始看,估計(jì)代碼有點(diǎn)丑。 一、兩種中文分詞開(kāi)發(fā)包 thulac (http://thulac.thunlp.org/)...

    Honwhy 評(píng)論0 收藏0
  • 分詞,難在哪里?科普+解決方案!

    摘要:分詞的算法中文分詞有難度,不過(guò)也有成熟的解決方案。例如通過(guò)人民日?qǐng)?bào)訓(xùn)練的分詞系統(tǒng),在網(wǎng)絡(luò)玄幻小說(shuō)上,分詞的效果就不會(huì)好。三的優(yōu)點(diǎn)是開(kāi)源的,號(hào)稱是中,最好的中文分詞組件。 showImg(https://segmentfault.com/img/remote/1460000016359704?w=1350&h=900); 題圖:by Lucas Davies 一、前言 分詞,我想是大多數(shù)...

    Steven 評(píng)論0 收藏0
  • 一個(gè)JAVA碼農(nóng)的Node之旅

    摘要:的重連機(jī)制會(huì)嘗試重連至其他伺服器并重新建立起對(duì)應(yīng)關(guān)系。使用進(jìn)行中文分詞曹操在操場(chǎng)操美女對(duì)分詞后的名詞和動(dòng)詞轉(zhuǎn)換為簡(jiǎn)體中文并查詢命中則替換。返回替換后的字符串得到曹操在操場(chǎng)美女打包部署本身是單線程的雖然本身提供模塊但需要修改代碼。 本篇是一個(gè)Node新手做完實(shí)際項(xiàng)目后的心得總結(jié)。Node高手完全可以略過(guò)本文。 摘要 如果BOSS要求你在短期內(nèi)快速實(shí)現(xiàn)一套聊天云服務(wù)平臺(tái), 你的第一反應(yīng)是什...

    rollback 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<