怎样从一句话中提取其主要的动词和名词,如 I want to go home,提取 go home.当然,这些名词和动词是存在数据库的,请问怎样设计数据库会好点?还有怎样匹配? 谢谢!
你可以有下面来步骤来提取:
1.用Replace("I want to go home","go home","{go home}")替换相应的字符串
2.有循环分别提取字符串“I want to go home”,如果碰到"{"到头就开始记录下一个字符,直到遇到"}"结束,这样你就可以得到你想要的字符串了。以下是我用VB.NET写的一个函数:
Dim str As String
Public Function findArr(ByVal pstr As String) As Boolean
'从字符串pstr中打出被{}里面的词组提取出来,并至于lvPlayList中
For i As Integer = 0 To pstr.Length - 1
Dim lv As String = ""
If pstr(i) = "{" Then
i = i + 1
Do
If pstr(i) = "}" Then
str= lv
Exit Do
End If
lv = lv & pstr(i)
i = i + 1
Loop
End If
next
End Function
如果词汇量很大的话,不建立索引结构,代价会太大,一个句子中词的个数越多,搜索越耗时
简单的索引: 以词头的最大最小长度,如以go开头的最大长度是多少,最小长度多少,可以减少搜索次数
如果你把索引建成树形结构,则速度最快,不过这种形式保存到数据库中就不大方便了,需要自定义一个结构