public IList<KeyValuePair<string, string>> Pickup(string line)
{
if (knownVocabulary == null)
{
knownVocabulary =
DbOperator.Instance.FindAllUserVocabulary(v => v.KnownStatus == KnownStatus.Known)
.Select(v => v.Word)
.ToList();
ignores = DbOperator.Instance.GetAllIgnoreWords().Select(v => v.Word).ToList();
}
var orgLine = GetOriginalSentence(line);
var sentences = GetSentences(orgLine);
var array = SplitSentence2Words(orgLine);
var result = new List<KeyValuePair<string, string>>();
foreach (string w in array)
{
var wordLow = w.ToLower();
if (IsEasyWord(wordLow))//简单词汇,忽略
{
continue;
}
if (IsEnglishName(w))
{
//英文名,忽略
continue;
}
if (IsSpecialName(w, sentences))
{
if (!SpecialWords.Contains(w))
{
SpecialWords.Add(w);
}
continue;
}
if(w[0]>='A'&&w[0]<='Z')//首字母大写的情况下,判断这个单词是不是特殊词汇,如果是,则保持首字母大写
{
if (Global.DictionaryService.IsInDictionary(w))
{
if (knownVocabulary.Contains(w) || ignores.Contains(w))
{
//认识的单词,忽略
continue;
}
result.Add(new KeyValuePair<string, string>(w, w));
continue;
}
}
var original = englishWordService.GetOriginalWord(wordLow);
//改成小写后,判断小写单词和其原型是否认识
if (knownVocabulary.Contains(wordLow) || knownVocabulary.Contains(original) || ignores.Contains(wordLow) ||
ignores.Contains(original))
{
//认识的单词,忽略
continue;
}
if (original != wordLow)
{
var wordMean = Global.DictionaryService.GetChineseMeanInDict(wordLow);
if (wordMean != null)
{
var originalMean= Global.DictionaryService.GetChineseMeanInDict(original);
if (!wordMean.Detail.Contains( originalMean.Detail))
{
//找到的原型不对
original = wordLow;
}
}
}
result.Add(new KeyValuePair<string, string>(original,w));
}
return result;
}