首页 新闻 会员 周边 捐助

C#从句子中提取动词和名词

0
悬赏园豆:40 [已关闭问题] 关闭于 2011-04-26 12:44

     怎样从一句话中提取其主要的动词和名词,如 I want to go home,提取 go home.当然,这些名词和动词是存在数据库的,请问怎样设计数据库会好点?还有怎样匹配? 谢谢!

Zenic的主页 Zenic | 菜鸟二级 | 园豆:244
提问于:2011-04-18 09:20
< >
分享
所有回答(2)
0

你可以有下面来步骤来提取:

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

蜡笔鑫 | 园豆:205 (菜鸟二级) | 2011-04-18 11:39
我想我没说明白,我的句子不是只有这一句,我想把动词和名词放到数据库中,然后搜索匹配,句子如I want to go my home,提取的还是go home.还是谢谢了!
支持(0) 反对(0) Zenic | 园豆:244 (菜鸟二级) | 2011-04-18 12:36
0

如果词汇量很大的话,不建立索引结构,代价会太大,一个句子中词的个数越多,搜索越耗时

简单的索引: 以词头的最大最小长度,如以go开头的最大长度是多少,最小长度多少,可以减少搜索次数

如果你把索引建成树形结构,则速度最快,不过这种形式保存到数据库中就不大方便了,需要自定义一个结构

2012 | 园豆:21445 (高人七级) | 2011-04-18 11:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册