自动生成摘要(二):丰富和完善功能

自动生成摘要(二):丰富和完善功能

一、取得编辑器里面的内容
在前面的程序当中,为了调试方便(没办法,JavaScript客房端程序的调试环境就很弱,再涉及到了xml简直能让人抓狂!),只好采用了“最小化”的方针。
而实际上,新闻发布系统当中是要使用编辑器的。生成摘要也是给编辑器里面的内容生成摘要。这里采用了编辑器自带的方法(函数):getHTML()。
所以修改了一行代码:
 var n_content = Editor1.getHTML();
二、有一个问题:用不用 CDATA
在开发前面的功能之时,我想到过数据在xml存储,是不是需要用到CDATA类型,结果在测试的时候发现,从编辑器中取得的数据,再存储到xml中,竟然是经过编码的内容。
下面是代码:

function  testCDATA() {
 
var n_content = Editor1.getHTML();
 
var xmlDoc  = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.loadXML(
'<?xml version="1.0"?><root/>');
 
var content = xmlDoc.createElement("content");
 content.text 
= "<![CDATA[" + n_content + "]]>";
 xmlDoc.documentElement.appendChild(content);
 alert(xmlDoc.xml); 
}

 

在alert弹出的对话框中显示:<content></content>之间的"<"和">"全都被替换成了“&lt;”和“&gt;”,也就是说,数据当中的html标签不会影响到了xml的结构。
接着,我在B页面当中,把接收到的数据存储到access数据库当中去,打开数据库再看,里面显然是"<p>"这样的内容。
下面是代码:

   Set  content  =  xmlDom.documentElement.selectNodes( " /root/content " )
  rs.open sql,conn,
3 , 2  
 
  
For   Each  em In content
   Response.Write(content(i).text)
   
   rs.addnew()
   
   rs(
" content " =  content(i).text
   
   rs.update
  
Next
  rs.close()


结论就是接收数据的B页面,自动把数据解码了。
所以,我决定,不采用CDATA类型处理数据了。一方面,是因为现有的功能,已经可以解决问题了。另一方面,则是考虑到程序的复杂性,因为越是复杂的程序就越可能出错。还是那句话,JavaScript客房端程序的调试环境就很弱,再涉及到了xml简直能让人抓狂!

三、一个关键:生成摘要。
现在的AI级别还很底,程序是无法理解文章内容的,只能通过某种方式,截取文章的一部分。再看看其它网站的摘要,大体上也是如此。
所以生成摘要的算法也就简单了:
1、过滤所有的html标签,将内容还原成文本。
2、截取文章开头的一定数量字符。
这些我都是通过一个过程(函数)完成的:

 

Function  HtmlToText(vStr,vNum)
 
If   trim (vStr) <> ""   Then
  
dim  reg
  
dim  newStr
  
set  reg  =   New  RegExp
  reg.IgnoreCase  
=   True
  reg.Global 
=   True
  reg.Pattern 
=   " <.+?> "
  
  newStr 
=  reg.Replace(vStr, " &nbsp; " )
  newStr 
=   Replace (newStr, " s " , "" )
  newStr 
=   Replace (newStr, "   " , "" )
  newStr 
=   Replace (newStr, " &nbsp; " , "" )
  newStr 
=   Replace (newStr,vbNewLine, "" )
  newStr 
=   Replace (newStr, chr ( 32 ), "" )
  newStr 
=   Left (newStr,vNum)
  newStr 
=  newStr  &   " ... "
 
End   If
 
 HtmlToText 
=  newStr
End Function

 

在B文件里添新的内容:
dim summary
summary = HtmlToText(content(i).text,30)

原来返回的完整的内容,现在将这句话注释掉
'Response.Write(content(i).text)
再添加一条返回摘要的语句:
Response.Write(summary)
这样的话生成摘要的工作就完成了。

四、在A页面上把摘要保存到文本域当中。
document.form1.n_summary.value = response;
根据最初和最终目的,<span id="SummaryResult"></span>,只是用来显示状态信息的,所以
原来的:
 SummaryResult = response;
改成:
 SummaryResult = "任务完成!";

结束,到这里,整个任务就全部完成了。还有一些其它的工作:如漂亮的界面、新闻内容和标题、摘要这些信息提交到数据库等等,就不在这里讨论了。
 

另外,我已经准备好了相关代码,但是在csdn的博客里不知道怎么上传。

如果谁有需要请发邮件过来吧,我的邮箱:xpnew@126.com

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值