gpt4 book ai didi

c# - Nhunspell 无法向词典中添加新词

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:59 25 4
gpt4 key购买 nike

我想使用 Hunspell 将一些自定义单词添加到字典中:

我在构造函数中从字典中加载:

private readonly Hunspell _hunspell;
public NhunspellHelper()
{
_hunspell = new Hunspell(
HttpContext.Current.Server.MapPath("~/App_Data/en_US.aff"),
HttpContext.Current.Server.MapPath("~/App_Data/en_US.dic"));
}

此函数向字典中添加一个新词:

public void AddToDictionary(string word)
{
_hunspell.Add(word); // or _hunspell.AddWithAffix(word, "aaa");
}

在我添加一个词到字典后,如果我在同一个请求中拼写这个词:

_hunspell.Spell(word)

它返回true,但如果我在另一个请求中拼写这个词,它返回false

我检查了 .aff.dic 这两个文件,我发现它在 _hunspell.Add(word); 之后没有改变,所以当发送另一个请求时,构造函数从原始字典创建一个新的 Hunspell 实例。

我的问题是:Nhunspell 是将新词添加到词典中并将其保存回物理文件(*.aff 或 *.dic),还是只是将其添加到内存中而不对词典文件做任何事情?

我是不是在向字典添加新词时做错了什么?

最佳答案

最后,通过 Prescott 的评论,我在 CodeProject 中找到了作者 (Thomas Maierhofer) 提供的信息。 :

您可以使用 Add() 和 AddWithAffix() 将您的单词添加到已创建的 Hunspell 对象中。Dictionary 文件没有被修改,因此每次创建 Hunspell 对象时都必须进行此添加。您可以在任何需要的地方存储自己的字典,并在创建 Hunspell 对象后添加字典中的单词。之后,您可以在字典中用自己的单词进行拼写检查。

这意味着没有任何东西可以保存回字典文件,所以我将我的 Nhunspell 类更改为单例以保留 Hunspell 对象。

public class NhunspellHelper
{
private readonly Hunspell _hunspell;
private NhunspellHelper()
{
_hunspell = new Hunspell(
HttpContext.Current.Server.MapPath("~/App_Data/en_US.aff"),
HttpContext.Current.Server.MapPath("~/App_Data/en_US.dic"));
}

private static NhunspellHelper _instance;
public static NhunspellHelper Instance
{
get { return _instance ?? (_instance = new NhunspellHelper()); }
}

public bool Spell(string word)
{
return _hunspell.Spell(word);
}
}

我可以用这条线在任何地方拼写单词:

 var isCorrect = NhunspellHelper.Instance.Spell("word");

关于c# - Nhunspell 无法向词典中添加新词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24200077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com