和大家讨论个话题:字符串的归类问题

skywind 2004-09-23 08:22:46
设一个字符串S为若干单词的组合S={w1,w2,w3....wn}
比如:S1="This is a demo string" = { "This", "is", "a", "demo", "string" }
那么现在有很多个字符串S1...SN,里面出现过的单词有M个,比如有100个字符串,里面含有C个单词
其单词的总集合为I={W1,W2,W3...WC},那么可以说某一个字符串总是这个总集合的子集合。

嘿嘿,那么这既是一题数学题目也是一题统计学题目,更是一题算法题目。
那么问题出来了:如果两个句子有70%的单词是重复的话,被认为是相似的,也就是说
"This is a demo string"
"This is a demo text"
他们两个是相似的。

终极目标是,如何对这么多的字符串进行归类??嘿嘿
...全文
221 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
huhuhu5 2004-10-28
  • 打赏
  • 举报
回复
是啊 我也 没太明白 你说得规类的标准 只有相似性么?
包不包括语法什么的? 如果没有的话应该很简单(要么就是量太大??)

如果有的话 语法中的标准怎么定义???
conghonglei 2004-10-28
  • 打赏
  • 举报
回复
如何确定一个类呢?
this is a demo string.

this isn't a demo string.

this is a simple string.

假如80%相似为同类,以哪个string 为此类的比较标准呢?
skywind 2004-09-25
  • 打赏
  • 举报
回复
那么如果说,我已经做了一个评估函数,可以求得两两字符串之间的相似程度了,现在怎么根据这个两两相似度来归类呢??
ZhangYv 2004-09-25
  • 打赏
  • 举报
回复
好久没有用PASCAL了,不知道是不是这种语法:
procedure Output(var n: integer);
begin
write (n);
end;

for i := 1 to MAXSIZE do
begin
write("Similar strings : ");
write(i);
for j := i + 1 to MAXSIZE - 1 do
begin
if ( F(slist[i], slist[j]) >= 0.7) then
Output(j);
end;
writeln;
end;
zzwu 2004-09-25
  • 打赏
  • 举报
回复
还有一个是概念问题: 什么意义下的字符串归类?
skywind 2004-09-25
  • 打赏
  • 举报
回复
比如:
var
slist:array[1..N] of string;

function F(s1,s2:string):float
begin
...
返回 0.0 - 1.0的浮点数值,表示两字符串的相似程度
end;

begin
....怎么写嘛....
end.
ZhangYv 2004-09-25
  • 打赏
  • 举报
回复
那就简单了啊,两个FOR语句循环嵌套一一做比较啊。和顺序排序的结构类似。
ZhangYv 2004-09-24
  • 打赏
  • 举报
回复
最重要的是找出那个模糊的评价函数吧,一一做比较效率太慢了些。这个步骤除了用HASH外我也没有想出好的办法。应该和模糊数学有关吧,如果能想找出其中的特征的话...

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧