當前位置:首頁 » 數據倉庫 » 分詞的資料庫
擴展閱讀
手機qq怎麼不保存密碼 2022-05-16 19:50:02
插sim卡的攝像頭怎麼配置 2022-05-16 19:47:06

分詞的資料庫

發布時間: 2022-05-14 12:58:29

⑴ 關於文章中的分詞和存取資料庫的問題

舉一個例子:創建一個自動回答的機器人(簡單的)
string str;
str Textbox.Text;//表示你一個文本框輸進去的文本
if (str.Contains("名字") || str.Contains("姓名") || str.Contains("叫什麼"))//提問中包含「名字」「姓名」「叫什麼」等關鍵字
{label1.Text = "我叫雷鋒!!";//lable1顯示「我叫雷鋒!!」
}
else{label1.Text ="聽不懂你說什麼";}//否則回答「聽不懂你說什麼」
當然你可以將你從資料庫中查詢到的文本賦值給Text.Box.Text中就行了,然後就按上面的例子寫代碼就行了。

⑵ NLPIR怎麼對sql server資料庫數據分詞

1、快速從NLPIR-ICTCLAS2014的下載包中獲得我們需要的東西

首先來看一下整個文件夾的結構

Data文件夾中,含有分詞需要用到的字典,Configure.xml裡面有相關的描述信息;doc裡面是使用幫助(介紹了基本需要使用到的函數介面);include、lib自然是我們主要用到的;sample是示例代碼;test裡面有一個exe示例;授權自然是License,應該是通過某種形式來限制我們的使用的,目前暫時還不清楚,如果到時候被限制,還需要進行調試。

2、從下載包中抽出我們需要的,並新建一個例子

從上面來看,我們需要用到的主要有三個文件夾Data、include、lib(我是打算做的32位程序,所以只需要用裡面的
lib\win32下的dll和lib)

這時,工程目錄就變成這樣的(當然NLPIR.dll需要和exe放在一塊):

第一個例子,比較簡單,就簡單使用幾個常用的函數:
[cpp] view plainprint?
// test_nlpir.cpp : 定義控制台應用程序的入口點。
//

#include "stdafx.h"

#include "iostream"
#include "string"

using namespace std;

#include "NLPIR.h"
#pragma comment(lib, "NLPIR.lib")

int _tmain(int argc, _TCHAR* argv[])
{
if(!NLPIR_Init())
{
printf("Init fails\n");
return -1;
}

const char *participle_result;

const char *sentence = "[整租出租]宣武門西大街4號樓二居整租[整套出租]媒體村天居園大兩居[整套出租]媒體村天居園大兩居";

cout << "===============NLPIR_ParagraphProcess==================" << endl;
participle_result = NLPIR_ParagraphProcess(sentence,1);
cout << participle_result << endl;
cout << "=================================" << endl;

cout << "==============NLPIR_GetFileNewWords===================" << endl;
const char * get_file_new_words = NLPIR_GetFileNewWords("test.txt");
cout << get_file_new_words << endl;
cout << "=================================" << endl;

cout << "===============NLPIR_GetKeyWords==================" << endl;
const char * get_key_words = NLPIR_GetKeyWords(sentence);
cout << get_key_words << endl;
cout << "=================================" << endl;

cout << "===============NLPIR_GetFileKeyWords==================" << endl;
const char * get_file_key_words = NLPIR_GetFileKeyWords("test.txt");
cout << get_file_key_words << endl;
cout << "=================================" << endl;

cout << "===============NLPIR_GetNewWords==================" << endl;
const char * get_new_words = NLPIR_GetNewWords(sentence);
cout << get_new_words << endl;
cout << "=================================" << endl;

NLPIR_Exit();

return 0;
}
函數可以按照字面上的意思來理解

這是輸出的結果:

但明顯是看到,上面的分詞有些小問題,如果我們在給聚類演算法喂數據的時候,這樣的分詞,會出現一定的問題

3、解決上面的問題

我們有兩種方法來處理這個問題

a、這也許是最簡單、也最方便的方法
當然,他除了一些繁瑣之外(如果你有了一些需要的數據詞條、詞典就我所謂了),我們可以新建一個詞典文件(比如我這個測試用例中使用user_dic.txt,他裡麵包含我們需要具體分開的片語):

那麼來看下面是如何具體使用字典的:
[cpp] view plainprint?
// test_nlpir.cpp : 定義控制台應用程序的入口點。
//

#include "stdafx.h"

#include "iostream"
#include "string"

using namespace std;

#include "NLPIR.h"
#pragma comment(lib, "NLPIR.lib")

int _tmain(int argc, _TCHAR* argv[])
{
if(!NLPIR_Init())
{
printf("Init fails\n");
return -1;
}

const char *participle_result;

unsigned int add_dic_items = NLPIR_ImportUserDict("user_dic.txt");//Import user dictionary
printf("%d user-defined lexical entries added!\n", add_dic_items);

const char *sentence = "[整租出租]宣武門西大街4號樓二居整租[整套出租]媒體村天居園大兩居[整套出租]媒體村天居園大兩居";

cout << "===============NLPIR_ParagraphProcess==================" << endl;
participle_result = NLPIR_ParagraphProcess(sentence,1);
cout << participle_result << endl;
cout << "=================================" << endl;

cout << "==============NLPIR_GetFileNewWords===================" << endl;
const char * get_file_new_words = NLPIR_GetFileNewWords("test.txt");
cout << get_file_new_words << endl;
cout << "=================================" << endl;

cout << "===============NLPIR_GetKeyWords==================" << endl;
const char * get_key_words = NLPIR_GetKeyWords(sentence);
cout << get_key_words << endl;
cout << "=================================" << endl;

cout << "===============NLPIR_GetFileKeyWords==================" << endl;
const char * get_file_key_words = NLPIR_GetFileKeyWords("test.txt");
cout << get_file_key_words << endl;
cout << "=================================" << endl;

cout << "===============NLPIR_GetNewWords==================" << endl;
const char * get_new_words = NLPIR_GetNewWords(sentence);
cout << get_new_words << endl;
cout << "=================================" << endl;

NLPIR_Exit();

return 0;
}

這是使用字典之後的分詞結果:

可以看到,我們想要切分的片語都已經出來了,也不再有任何新詞出現了

b、通過多個樣本(也就是多條數據)來進行分詞,這樣我們需要用到的詞的頻率便會增長(有的詞只出現1、2次並不會被識別出來),這樣在GetNewWords中,便能夠得到一些我們想法的數據,得到這些數據之後,可以寫到文本中,然後再寫到用戶字典中

這里只演示第一步,看看是如何通過增加多條數據來擴大GetNewWords的結果的。
其實很簡單,只需要把第一個例子中的測試字元串修改成如下(同樣的test.txt對應的字元串也跟著修改):
[plain] view plainprint?
const char *sentence = "[整租出租]宣武門西大街4號樓二居整租\
[整套出租]媒體村天居園大兩居\
【房主出租】萬柳中路康橋水郡一居室\
【個人出租】 上地橋東清上園小區開間58平\
3個月轉租 【中關村保福寺橋南】 兩居中的主卧\
【整套長期出租】海淀安寧佳園安寧庄一居整租(房東直租)\
[單間出租]造甲街南里20號院二居大間\
[個人誠心出租]世紀金源附近,遠大園四區11號樓三居次卧\
【房主1居直租】6號線地鐵十里堡站炫特嘉園1居(限1人女)\
[單間出租]10號線西土城牡丹園北影黃亭子小區二居之一\
[整套出租]西二旗智學苑三居整套\
[房主整套出租]清河地鐵8號線西小口站精裝三居整套\
[單間出租]清華校內單間 \
[北京大學西南門海淀橋南大河庄苑精裝修一居室整套出租出租]蘇\
[求助]求租上地東里/西里/佳園/農大南路2號院 干凈舒適帶電梯兩\
[求助]轉租 西單/金融街/二龍路兩居室\
[整套出租]財經大學附近皂君廟一居整套\
北沙灘科學院南里50米一居簡裝3400元轉租,需要的站內索取轉租\
招合租 中關村知春裏海淀黃庄地鐵站 人大附中對面 正規三居\
【個人出租】回龍觀地鐵附近兩居中的主卧和次卧,也可以整租\
個人出租\
[整套出租]朝陽區南沙灘小區一居整套\
(個人轉租)新龍城二期14平米正規次卧 1000元\
個人出租:溫泉鎮尚峰尚水小區精裝半地下二居\
【昌平沙河高教園一區小兩居】【2450家電全齊全新】\
個人求租,石景山八角附近二居室\
個人出租保利西山林語90平二居室\
2014-7-30存量房網上簽約\
明天決定先漲10%的房租,為房產稅做准備,得未雨綢繆啊\
今晚新聞調查,心全涼了:轉基因米實際已經擴散(12)\
全款求購萬年花城兩居室(19)\
問一個初級問題:校友卡大家都什麼額度?我5k(15)\
再問一個小白問題(8)\
網友評怕老婆城市排行榜:成都第二上海居首(14)\
清華大學東 八家嘉苑 61平米 全南向正規一居 看圖 240萬(1)\
110平米新房求靠譜裝修團隊、設計、報價\
五道口學區房 滿五年唯一兩居 急售260萬\
父母隨遷落戶 能否申請政策房\
房子南面離馬路60米,西面緊挨著小學和中學,19層,會吵嗎\
學區房在漲嗎\
好幾個中介打電話說房價要開始上漲了\
【整套出租】6號線黃渠站蘋果派小區77平2居\
個人出租]海淀區五道口華聯南暫安處 朝北主卧合租 無中介費近地\
【房屋整租】芍葯居北里2居室房主首次出租\
[出租] 中關村北大西門單間\
[求助]求租 上地 當代城市家園或怡美家園兩居或者三居 一家人住\
[整套出租]五道口東升園一室一廳南北通透全明實木傢具地板家電";
這些數據,也是通過web頁面得到的
現在來看看結果
一些常見的詞彙也能通過GetNewWords反應出來了

⑶ 如何查看oracle資料庫的分詞器

oracle使用詞法分析器(lexer)進行全文檢索,
lexer使用CTX_DDL包,包api位置:{ORACLE_HOME}/ctx/admin/dr0ddl.pkh

⑷ mysql 的中文全文搜索,關於分詞,有沒有好的解決方案

別用mysql直接做,效率差,實現也麻煩。我實踐過一個失敗的項目,做出來了功能與效率都沒預期的好。
java+lucense+中文分詞詞庫+mysql全文索引。
有人專門做過,全文索引的中間件,叫phinux。找這種組件做。

⑸ 資料庫SQL,根據盤古分詞返回的詞進行查詢並按詞的匹配度、權重和詞頻進行排序的存儲過程

專業一點好不?SQL太多了,不同資料庫的區別很大的

⑹ sql 全文搜索 怎麼分詞的

全文索引的核心理念是倒排索引(即反向索引),而最大的技術難點就在於分詞。


英文的分詞很簡單,直接按空格分詞即可。但中文不能這么干,主要原因有兩點:

  1. 中文詞與詞之間沒有空格

  2. 中文分詞結果存在歧義。例如:周立波/小人/傻逼 和 周立/波小/人傻逼,兩種分詞都說得通,只有結合上下文才知道哪一種對

因此,中文分詞比英文分詞要困難得多,學術界在這一領域已經研究了多年,並取得了很多研究成果,但目前,中文分詞的技術仍然很不完善。


回到全文搜索的話題,sql server自帶的中文分詞應該是基於正向最大匹配法的,說實話效果並不好。要求不高的話可以湊活用。除此之外,也有一些開源或商業的項目,例如Lucene(及其後續衍生),盤古等等,比sql server自帶的要強。但這些項目也有問題:一是分詞效果難稱完美,二是在資料庫中使用比較麻煩。


以上全部手打。有什麼問題請繼續問。

⑺ ik analyzer 分詞連接資料庫怎麼使用

全文索引的核心理念是倒排索引(即反向索引),而最大的技術難點就在於分詞。 英文的分詞很簡單,直接按空格分詞即可。但中文不能這么干,主要原因有兩點: 中文詞與詞之間沒有空格 中文分詞結果存在歧義。

⑻ Python中主要使用哪些資料庫

Python中常用的資料庫有很多,需要根據不同的業務和應用場景來選擇合適的資料庫,才能使程序更高效.
一般常用的主要有 MySQL, Redis, MangoDB 等資料庫
學習這些資料庫,可以看黑馬程序員視頻庫的學習視頻,有代碼、有資料,有PPT,不了解還可以問老師!

⑼ 我想用PHP做一個聊天機器人,我調用別人的API實現了中文分詞,我要怎樣構建自己的資料庫呢

可以用SimSimi API:http://developer.simsimi.com/(不需要資料庫)。

根據提示進行注冊(注冊地址:http://developer.simsimi.com/signUp)。

登錄後訪問:http://developer.simsimi.com/apps,

點擊[Get a 7 days Trial Key],你就會獲得一個Trial Key(有效期為7天),然後直接

$key='';//你的TrialKey
$lang='';//語言
$msg='';//用戶說的話
$res=file_get_contents('http://sandbox.api.simsimi.com/request.p?key='.$key.'&lc='.$lang.'&ft=1.0&text='.$msg);

或者你要購買一個Paid Key,也可以。

在http://developer.simsimi.com/apps中,點擊[Get Paid Key],就可以購買。

只是代碼要改為(響應地址不同):

$key='';//你的PaidKey
$lang='';//語言
$msg='';//用戶說的話
$res=file_get_contents('http://api.simsimi.com/request.p??key='.$key.'&lc='.$lang.'&ft=1.0&text='.$msg);

就可以了。注意php.ini中,allow_url_fopen要為On:

allow_url_fopen=On

然後會返回一個JSON字元串,與下面類似:

{
"result":100,
"response":"SimSimi的回答",
"id":本次會話的標識符(int),
"msg":"響應描述"
}

相應描述與result的值相關。

100:OK.//成功
400:BadRequest.//參數錯誤
401:Unauthorized.//Key不存在
404:Notfound.//頁面不存在
500:ServerError.//伺服器出錯

參見:SimSimi API:http://developer.simsimi.com/api

謝謝!

⑽ 如何對mysql資料庫中一個欄位進行分詞

如何對mysql資料庫中一個欄位進行分詞
安裝一個php分插件就可以對內容進行分詞,得到你要的關鍵詞,取關鍵詞密度最大的放到keyword里就可以