我正在开发一个视频处理项目,在其中我从视频中提取文本作为输入并将该文本保存在文本文件中。我的文本中包含垃圾文本以及单词,我现在需要分离出有意义的文本生成的文本中的单词并将其转换为标签? 任何人都可以建议可用于此的API /算法?
答案 0 :(得分:1)
您可以查看Apache OpenNLP(自然语言处理)和C#衍生SharpNLP。
答案 1 :(得分:0)
您可以将SharpNLP与 SharpEntropy.dll和OpenNLP.dll 一起使用,以及以下代码段。
private OpenNLP.Tools.Tokenize.EnglishMaximumEntropyTokenizer mTokenizer;
private string[] Tokenize(string text)
{
if (mTokenizer == null)
{
mTokenizer = new OpenNLP.Tools.Tokenize.EnglishMaximumEntropyTokenizer(mModelPath + "EnglishTok.nbin");
}
return mTokenizer.Tokenize(text);
}
现在你将拥有一个令牌的字符串数组。我的意思是包含所有数据的字符串数组。可能包括垃圾。现在你必须只分离有意义的标记。为此,您可以使用NHunspell.dll
public list<string> validate(string[] tokens)
{
Hunspell hunspell = new Hunspell("en_US.aff", "en_US.dic");
List<string> valid_tokens = new List<string>();
foreach (string token in tokens)
{
if (!hunspell.Spell(token))
{
valid_tokens.Add(token);
}
}
hunspell.Dispose();
return valid_tokens;
}
现在您将拥有一个 valid_tokens 列表,其中仅包含具有英语含义的有效令牌。 希望这能解决你的问题。
有关将SharpNLP集成到Visual Studio项目中的逐步方法,请阅读我撰写的这篇详细文章。 Easy way of Integrating SharpNLP with a Visual Studio C# Project