public PhraseGraph(JudgeOfRelevancy JoR_, String text, String q, HashSet <String> q_content_words) { JoR = JoR_; phrases = new SortedDictionary <String, Phrase>(); query = q; query_content_words = q_content_words; String[] sentences = get_sentences(text.ToLower()); Phrase last_sentence = null; foreach (var sentence in sentences) { Phrase sentence_phrase = ensure_phrase(sentence); // link neighboring sentences if (last_sentence != null) { // 0.5 < 0.6 so weight will drift back // earlier sentences are better last_sentence.add_recipient(sentence_phrase, 0.5); sentence_phrase.add_recipient(last_sentence, 0.6); } String[] words = get_words(sentence); // link sentences with their words foreach (var word in words) { if (word == "") { continue; } Phrase word_phrase = ensure_phrase(word); // weight flows from long sentences to words, to short sentences word_phrase.add_recipient(sentence_phrase, 1.0); sentence_phrase.add_recipient(word_phrase, 1.0); } last_sentence = sentence_phrase; } // link synonyms //foreach (var word in phrases.Keys) //{ // // don't include sentences // if (word.Split().Count() >= 2) { continue; } // HashSet<String> syns = JoR.get_synonyms(word); // foreach (String synonym in syns) // { // // TODO: fix this :D can't modify the phrases collection while we're enumerating phrases.Keys! // Phrase word_phrase = ensure_phrase(word); // Phrase syn_phrase = ensure_phrase(synonym); // syn_phrase.add_recipient(word_phrase, 1.0 * syns.Count()); // word_phrase.add_recipient(syn_phrase, 1.0 * syns.Count()); // } //} }
public PhraseGraph(JudgeOfRelevancy JoR_, String text, String q, HashSet <String> q_content_words) { JoR = JoR_; phrases = new SortedDictionary <String, Phrase>(); query = q; query_content_words = q_content_words; List <Tuple <String, List <String> > > sentence_words = TextCleaner.get_sentence_words(text); Phrase last_sentence = null; foreach (Tuple <String, List <String> > sentence_and_words in sentence_words) { String sentence = sentence_and_words.Item1; List <String> words = sentence_and_words.Item2; Phrase sentence_phrase = ensure_phrase(sentence); if (last_sentence != null) // Link neighbor sentences { last_sentence.add_recipient(sentence_phrase, 0.5); // 0.5 < 0.6, so weight will drift back: sentence_phrase.add_recipient(last_sentence, 0.6); // so earlier sentences better } foreach (var word in words) // Link sentences with their words { if (word == "") { continue; } Phrase word_phrase = ensure_phrase(word); word_phrase.add_recipient(sentence_phrase, 10.0 / words.Count()); // weight flows from long sentences sentence_phrase.add_recipient(word_phrase, 1.0); // to words, to short sentences } last_sentence = sentence_phrase; } foreach (String word in phrases.Keys) // Link synonyms { if (word.Split().Count() >= 2) { continue; } // don't include sentences HashSet <String> syns = JoR.get_synonyms(word); foreach (String synonym in syns) { Phrase word_phrase = ensure_phrase(word); Phrase syn_phrase = ensure_phrase(synonym); syn_phrase.add_recipient(word_phrase, 1.0 * syns.Count()); word_phrase.add_recipient(syn_phrase, 1.0 * syns.Count()); } } }
async public static Task <PhraseGraph> build_PG(String text, String q, HashSet <String> q_content_words) { JudgeOfRelevancy JoR_ = await JudgeOfRelevancy.build_JoR(); return(new PhraseGraph(JoR_, text, q, q_content_words)); }
public PhraseGraph(JudgeOfRelevancy JoR_, String text, String q, HashSet<String> q_content_words) { JoR = JoR_; phrases = new SortedDictionary<String, Phrase>(); query = q; query_content_words = q_content_words; List<Tuple<String, List<String>>> sentence_words = TextCleaner.get_sentence_words(text); Phrase last_sentence = null; foreach (Tuple<String, List<String>> sentence_and_words in sentence_words) { String sentence = sentence_and_words.Item1; List<String> words = sentence_and_words.Item2; Phrase sentence_phrase = ensure_phrase(sentence); if (last_sentence != null) // Link neighbor sentences { last_sentence.add_recipient(sentence_phrase, 0.5); // 0.5 < 0.6, so weight will drift back: sentence_phrase.add_recipient(last_sentence, 0.6); // so earlier sentences better } foreach(var word in words) // Link sentences with their words { if(word=="") {continue;} Phrase word_phrase = ensure_phrase(word); word_phrase.add_recipient(sentence_phrase, 10.0 / words.Count()); // weight flows from long sentences sentence_phrase.add_recipient(word_phrase, 1.0); // to words, to short sentences } last_sentence = sentence_phrase; } foreach(String word in phrases.Keys) // Link synonyms { if (word.Split().Count() >= 2) { continue; } // don't include sentences HashSet<String> syns = JoR.get_synonyms(word); foreach(String synonym in syns) { Phrase word_phrase = ensure_phrase(word); Phrase syn_phrase = ensure_phrase(synonym); syn_phrase.add_recipient(word_phrase, 1.0*syns.Count()); word_phrase.add_recipient(syn_phrase, 1.0*syns.Count()); } } }
public PhraseGraph(JudgeOfRelevancy JoR_, String text, String q, HashSet<String> q_content_words) { JoR = JoR_; phrases = new SortedDictionary<String, Phrase>(); query = q; query_content_words = q_content_words; String[] sentences = get_sentences(text.ToLower()); Phrase last_sentence = null; foreach (var sentence in sentences) { Phrase sentence_phrase = ensure_phrase(sentence); // link neighboring sentences if (last_sentence != null) { // 0.5 < 0.6 so weight will drift back // earlier sentences are better last_sentence.add_recipient(sentence_phrase, 0.5); sentence_phrase.add_recipient(last_sentence, 0.6); } String[] words = get_words(sentence); // link sentences with their words foreach (var word in words) { if (word == "") { continue; } Phrase word_phrase = ensure_phrase(word); // weight flows from long sentences to words, to short sentences word_phrase.add_recipient(sentence_phrase, 1.0); sentence_phrase.add_recipient(word_phrase, 1.0); } last_sentence = sentence_phrase; } // link synonyms //foreach (var word in phrases.Keys) //{ // // don't include sentences // if (word.Split().Count() >= 2) { continue; } // HashSet<String> syns = JoR.get_synonyms(word); // foreach (String synonym in syns) // { // // TODO: fix this :D can't modify the phrases collection while we're enumerating phrases.Keys! // Phrase word_phrase = ensure_phrase(word); // Phrase syn_phrase = ensure_phrase(synonym); // syn_phrase.add_recipient(word_phrase, 1.0 * syns.Count()); // word_phrase.add_recipient(syn_phrase, 1.0 * syns.Count()); // } //} }