使用C#NHunspell,如何检查单词是否拼写正确,如果不正确拼写是什么?
我已将NHunspell.dll导入到项目中.并查看了文档.
但是在阅读文档方面有点新意,很难知道从哪里开始.有人可以举例说明如何拼写单词拼写正确吗?基本上我需要一个NHunspell的Helloworld.
我想解析支持 hunspell 格式aff和dic文件的开放式办公室。
英文aff和dic文件可以从这里下载,例如:http : //extensions.openoffice.org/en/project/english-dictionaries-apache-openoffice
我想扫描给定.dic文件的每一行并使用提供的每行生成每个可能的单词.aff文件
我怎样才能做到这一点?
我已经安装了 NHunspell 框架,但它没有该功能:https ://www.nuget.org/packages/NHunspell/
例如对于英语让我们考虑
make/UAGS
Run Code Online (Sandbox Code Playgroud)
制作可以是make, made, makes, making等
现在我需要解析器给我所有这些组合。我怎样才能获得它们?非常喜欢
所以基本上我想扫描字典的每一行并从该行的单词中生成所有可能的单词,我不知道我该怎么做
我也可以编写自己的解析器,但在我看来规则非常复杂,并且没有关于此的详细和简单的文档
这里我想要的基本上。图片解释的很清楚
给予analyze/ADSG,en.dic并en.aff归档并获得以下所有单词
analyze, analyzes, analyzing, analyzed, reanalyze, reanalyzes, reanalyzing, reanalyzed
Run Code Online (Sandbox Code Playgroud)
我正在为UWP platorm移植一个写作者的申请.我剩下的唯一一块拼图是NHunspell图书馆.我广泛使用它进行拼写检查和同义词库功能.我已经定制了它,并为各种事物创建了自定义词典(即每个写作项目的不同字典).这个图书馆很棒.
但是,我似乎无法在我的UWP应用程序中包含此DLL.
1)有没有办法强制使用这个DLL?我真的很喜欢NHunSpell系统的设置方式.它具有常识,并且非常快速且易于使用.
2)如果没有,任何人都可以为自定义词典,自定义拼写检查等推荐更好的解决方案吗?
更新3
经过大量更新和在线阅读后,我找到了一个讨论拼写检查理论的链接.这是一个简单的例子(我最常用的一个).
http://www.anotherchris.net/csharp/how-to-write-a-spelling-corrector-in-csharp/
阅读完这篇文章,获取该基本代码,并从Hunspell .dic文件中删除英文单词后,我创建了自己的拼写检查库,该库在UWP中有效.
一旦我得到巩固,我会将其作为下面的答案发布,以捐赠给SO社区.:)
更新2
我承认使用了Hunspell.它看起来根本不可能......有没有其他人可以建议的库/包?
更新:
我可能需要重新说明我不能包含DLL的语句:我不能通过NuGet包含DLL.它抱怨DLL与UAP/UWP平台不兼容.
我能够通过链接到现有的DLL(而不是NuGet)手动将DLL包含在我的项目中.但是,该DLL确实证明与UAP平台不兼容.一个简单的拼写检查单词在WinForms中运行正常,但会立即崩溃System.IO.FileNotFoundException.
NHunspell的构造函数伸手加载关联.dic和.aff文件.但是,我通过将文件加载到内存中然后调用备用构造函数来缓解这种情况,该构造函数为每个文件采用字节数组而不是文件名.它仍然崩溃,但有一个新的Method not found错误:
String System.AppDomain.get_RelativeSearchPath()
我正在寻找任何可在UAP框架内工作的拼写检查引擎.我希望它只是出于熟悉的原因而成为NHunspell.但是,我并不是因为这种情况越来越不可能作为一种选择.
与我合作的人建议我使用内置的拼写检查选项.但是,我无法使用内置的Windows 10/TextBox拼写检查功能(我知道),因为我无法控制自定义词典,我无法禁用自动大写和单词替换等功能(其中)如果它认为它足够接近正确的猜测,它会替换你的话.对于作家来说,那些东西是章节自杀!作者可以在操作系统级别关闭它们,但是他们可能希望将它们用于其他应用程序,而不是这个.
如果有NHunspell的解决方法,请告诉我.如果您不知道解决方法,请告诉我您在UAP框架内工作的最佳替换自定义拼写检查引擎.
作为旁注,我也使用NHunspell作为其词库功能.它在我的Windows应用程序中运行良好.我也必须更换这个功能 - 希望使用与拼写检查引擎相同的引擎.但是,如果你知道一个好的同义词引擎(但它没有拼写检查),那也很好!
谢谢!!
我有一个使用NHUnspell NuGet包的ASP.NET/MVC Web角色.当我尝试运行它时,我收到以下错误消息:
Could not load file or assembly 'Hunspellx64.dll' or one of its dependencies. The module was expected to contain an assembly manifest.
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为据我所知,我的Web角色项目不应该尝试加载非托管的Hunspellx64.dll.这应该由托管的NHUnspell DLL处理.该DLL将作为构建步骤复制到Web角色的/ bin目录中.
更新: 感谢Thomas关于WebActivator过时的评论,我能够解决这个问题.我正在将我的回复评论复制到他接受的答案,以确保有此问题的其他人看到修复:
在此错误开始发生之前,我已成功运行NHUnspell.破坏的是用NuGet安装AttributeRouting.AttributeRouting在旧版WebActivator(1.0.0.0)中拖拽.不幸的是,当您执行Update操作时,NuGet不建议对其进行更新.您必须根据此网页的说明通过程序包管理器控制台手动执行更新:
这是修复收到之前原始帖子的其余部分:
我已经搜索了我的项目,直接引用/链接到Hunspellx64.dll,包括我的NuGet包配置,packages.config,web.config,我的引用列表,原始项目文件等.我找不到任何对该DLL的直接引用.我还能在哪里查看或者我还能尝试阻止我的项目直接加载该非托管DLL?这是ASP.NET错误转储:
[BadImageFormatException: Could not load file or assembly 'Hunspellx64.dll' or one of its dependencies. The module was expected to contain an assembly manifest.]
System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, …Run Code Online (Sandbox Code Playgroud)