声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1426|回复: 5

[编程技巧] 求查阅单词/文本分词的程序

[复制链接]
发表于 2008-1-4 10:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
一个文本文件仅含有英文字母和分隔符,分隔符包括空格、逗号、句号和换行符。除此之外,该文件不含其它符号。一个单词是由一个或多个分隔符分隔的连续字母序列,例如:符号“_”为空格符;“↓”为换行符;“ . ”为句号。文本文件中的第一个句子是从文件头到第一个句号间的字符序列(含句号), 除第一个句子之外的所有句子都是由两个句号间的所有字符组成的序列(含后面的句号)。编一程序,由键盘输入一个符合上述约定的文本文件名和一个单词,计算该单词在该文件中出现的次数,并输出包含该单词的所有句子(按句子在文件中的先后次序,依次输出)。
注意:
文件中每个单词长度不超过20个字母。
判断单词是否相同时不区分大小写。例如ABC、Abc、ABc、aBC、abc…都是同一个单词。
输入数据:
由键盘输入待查文本文件名和待查单词。待查文件名为:input.txt。
输出数据:
输出文件为output.txt,该文件第一行为该单词在文件中出现的次数。
从每二行开始是依先后次序输出的包含该单词的句子。
在输出句子时请注意:
每个句子无论多长只占一行;
原句中每一个换行符用一个空格符代替。



不知道这个怎么用Matlab实现……
回复
分享到:

使用道具 举报

发表于 2008-1-4 16:45 | 显示全部楼层
这个问题有点儿繁,用正则表达式应该是最合适了。
搜索下版面 “正则表达式”

doc regexpi
发表于 2008-1-4 20:47 | 显示全部楼层
学习中
发表于 2008-1-5 15:44 | 显示全部楼层
今天有点儿时间,就写了个小函数,lz测试测试吧,不行再改改。水平有限,所以写的有点儿繁,中间的循环应该还可以简化。


  1. function fenci(iFile,oFile,pstr)
  2. try
  3.     fid=fopen(iFile);
  4.     C=textscan(fid,'%s ');
  5.     fclose(fid);
  6.     T='';
  7.     for i=1:length(C{1,1})
  8.         T=[T,' ',C{1,1}{i,1}];
  9.     end
  10.     m1=regexpi(T,'\.','start');
  11.     s{1,:}=T(1:m1(1));
  12.     for i=1:length(m1)-1;
  13.         s{i+1,:}=T(m1(i)+1:m1(i+1));
  14.     end
  15.     cc=regexpi(T,pstr,'start');
  16.     count=length(cc);
  17.     r=regexpi(s,pstr,'start');
  18.     fido=fopen(oFile,'w');
  19.     fprintf(fido,'%g\n',count);
  20.     for i=1:length(r)
  21.         if ~isempty(r{i,1})
  22.             fprintf(fido,'%s\n',s{i,1});  
  23.         end
  24.     end
  25.     fclose(fido);
  26.     disp([oFile,' generated successfully!'] )
  27.     disp('Finished!')
  28. catch
  29.     error('Unkonwn Error');
  30. end
  31.   
复制代码


testscrpit

  1. clear
  2. clc
  3. iFile='input2.txt';
  4. oFile='output2.txt';
  5. pstr='house';
  6. fenci(iFile,oFile,pstr)
复制代码

input2.txt

2.3 KB, 下载次数: 20

output2.txt

900 Bytes, 下载次数: 15

评分

2

查看全部评分

发表于 2010-11-26 16:31 | 显示全部楼层
好像不太懂,命令好陌生
发表于 2010-11-26 16:32 | 显示全部楼层
regexpi怎么用,求解
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 11:58 , Processed in 0.105320 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表