自动生成摘要(二):丰富和完善功能
一、取得编辑器里面的内容
在前面的程序当中,为了调试方便(没办法,JavaScript客房端程序的调试环境就很弱,再涉及到了xml简直能让人抓狂!),只好采用了“最小化”的方针。
而实际上,新闻发布系统当中是要使用编辑器的。生成摘要也是给编辑器里面的内容生成摘要。这里采用了编辑器自带的方法(函数):getHTML()。
所以修改了一行代码:
var n_content = Editor1.getHTML();
二、有一个问题:用不用 CDATA
在开发前面的功能之时,我想到过数据在xml存储,是不是需要用到CDATA类型,结果在测试的时候发现,从编辑器中取得的数据,再存储到xml中,竟然是经过编码的内容。
下面是代码:
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>之间的"<"和">"全都被替换成了“<”和“>”,也就是说,数据当中的html标签不会影响到了xml的结构。
接着,我在B页面当中,把接收到的数据存储到access数据库当中去,打开数据库再看,里面显然是"<p>"这样的内容。
下面是代码:
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、截取文章开头的一定数量字符。
这些我都是通过一个过程(函数)完成的:
If trim (vStr) <> "" Then
dim reg
dim newStr
set reg = New RegExp
reg.IgnoreCase = True
reg.Global = True
reg.Pattern = " <.+?> "
newStr = reg.Replace(vStr, " " )
newStr = Replace (newStr, " s " , "" )
newStr = Replace (newStr, " " , "" )
newStr = Replace (newStr, " " , "" )
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