求关于英文单词拼写检查的方法

zhengqian529 2009-08-26 12:47:37
我想实现一个英文单词的拼写检查,在网上搜罗了一下,几乎都是调用office做拼写检查
前提是必须安装office(很不方便吧? 我也觉得)
然后引用类库:Microsoft.Office.Interop.Word.dll
以下是代码:


using Word = Microsoft.Office.Interop.Word;


public static bool SourceStringSpellingCheck(LocResource lr,ref string message)
{
try
{
string[] wordList = lr.SourceString.Value.Split(LCXOMToolbox.charArray, StringSplitOptions.RemoveEmptyEntries);
object missing = System.Reflection.Missing.Value;
Word._Application app = null;
try
{
app = new Word.Application();
}
catch
{
Console.WriteLine("The Word Application can not be initialized, make sure you have MS office Word installed");
return false;
}

int errors = 0;
bool result = false;

app.Visible = false;

// Setting these variables is comparable to passing null to the function.
// This is necessary because the C# null cannot be passed by reference.
object template = missing;
object newTemplate = missing;
object documentType = missing;
object visible = true;

//Setting these variables is comparable to passing null to the function.
//Close and Quit method.
object saveChanges = false;
object originalFormat = missing;
object routeDocument = missing;


foreach (string word in wordList)
{
if (word.Length > 1)
{
Word._Document doc1 = app.Documents.Add(ref template, ref newTemplate, ref documentType, ref visible);
doc1.Words.First.InsertBefore(word);
Word.ProofreadingErrors spellErrorsColl = doc1.SpellingErrors;
errors = spellErrorsColl.Count;

if (errors > 0)
{
message = string.Format("{0}{1};", message, word);
errors = 0;
result = true;
}
//Close document
doc1.Close(ref saveChanges, ref originalFormat, ref routeDocument);
}
}
//Quit application
app.Quit(ref saveChanges, ref originalFormat, ref routeDocument);

return result;
}
catch (Exception ex)
{
Console.WriteLine("Some exception occurs:{0}", ex.Message);
return false;
}
}


但是这样做效率太慢, 大家能有更好的方法么?或者改进方法。
谢谢。
(ps:分不多,暂时使用100分吧)
...全文
1026 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxxylce0 2009-08-29
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 angel6709 的回复:]
引用 7 楼 cxxylce0 的回复:
XML codea
--b
----o
------u
--------t
------v
--------e
--l
----o
------n
--------g
--s
----k
----p
b
--o
----d
------y
----y

abp合法,故不对
[/Quote]
不可能有abp啊。b下面只有o,不可以在同一层移动。
liffe 2009-08-27
  • 打赏
  • 举报
回复
ding
Ki1381 2009-08-27
  • 打赏
  • 举报
回复
更正:

http://download.csdn.net/source/1608467
zhengqian529 2009-08-27
  • 打赏
  • 举报
回复
谢谢各位了,实在没有满意的答案。结了
24K純帥 2009-08-27
  • 打赏
  • 举报
回复
up
guyehanxinlei 2009-08-26
  • 打赏
  • 举报
回复
这个确实有些难度
cxxylce0 2009-08-26
  • 打赏
  • 举报
回复
说下算法:

自己写个词典。

然后使用搜索树组织这个词典,形成拼写检查树,类似如下格式

比如词典中有:
above about ask asp along body boy
那么就形成:
a
b
o
u
t
v
e
l
o
n
g
s
k
p
b
o
d
y
y
这样的形式。
对于正文中的每个单词,都在这棵树上查找一次,找不到就是拼写错误。

当然,也可以使用第三方专门的轻量的拼写检查组件。
angel6709 2009-08-26
  • 打赏
  • 举报
回复
要不就字典吧
泡面之夏 2009-08-26
  • 打赏
  • 举报
回复
没怎么接触,顶。。。
风之影子 2009-08-26
  • 打赏
  • 举报
回复
貌似很难的东东!

没搞过
Ki1381 2009-08-26
  • 打赏
  • 举报
回复
刚在CSDN下载频道中上传了一个合法的英语单词参考包,比较全了,有兴趣的可以参考下。

http://download.csdn.net/source/1606694
zhengqian529 2009-08-26
  • 打赏
  • 举报
回复
看来是没有方法了??都沉到这么底下了
zhengqian529 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wuyq11 的回复:]
把所有单词按照树进行组织,也就是26个不同的单词树,对于一般常用的单词10层以内就可以表示,然后匹配。
或用词库参考
[/Quote]
下载不了,气死人。
有提供接口的词库么?
zhengqian529 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 gomoku 的回复:]
Check this out:

http://sourceforge.net/projects/netspell/
[/Quote]
我们不能使用非微软的或者第三方的产品,不好意思。
angel6709 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cxxylce0 的回复:]
XML codea
--b
----o
------u
--------t
------v
--------e
--l
----o
------n
--------g
--s
----k
----p
b
--o
----d
------y
----y
[/Quote]
abp合法,故不对
wuyq11 2009-08-26
  • 打赏
  • 举报
回复
把所有单词按照树进行组织,也就是26个不同的单词树,对于一般常用的单词10层以内就可以表示,然后匹配。
或用词库参考
gomoku 2009-08-26
  • 打赏
  • 举报
回复
zhengqian529 2009-08-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 cxxylce0 的回复:]
以前写过拼写检查代码的,只要一天的功夫就可以写得很好。
组织词典也可以用现有的来转换。
如果实在不想自己做,第三方这样的库或者控件很多的,没有必要非得Office,而且Office的授权好像不允许单独分发,也就是目标电脑必须装Office才能用你的程序了。
[/Quote]

能推荐几个么?
cxxylce0 2009-08-26
  • 打赏
  • 举报
回复
以前写过拼写检查代码的,只要一天的功夫就可以写得很好。
组织词典也可以用现有的来转换。
如果实在不想自己做,第三方这样的库或者控件很多的,没有必要非得Office,而且Office的授权好像不允许单独分发,也就是目标电脑必须装Office才能用你的程序了。
zimu312500 2009-08-26
  • 打赏
  • 举报
回复
up
加载更多回复(2)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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