コード例 #1
0
 public void Left_WithSentenceStringAndNegativeWordLength_ExpectsAllButLastWord()
 => Equal(SENTENCE.Left(-LENGTH_WORD), WORD_FIRST + WORD_SEPARATOR);
コード例 #2
0
 public void EnsureStartsWith_WithSentenceStringAndUnknownWord_ExpectsConcatenationAtStart()
 => Equal(
     WORD + SENTENCE,
     SENTENCE.EnsureStartsWith(WORD));
コード例 #3
0
 public void NullOrWhiteSpace_WithSentenceString_ExpectsFalse()
 => False(SENTENCE.IsNullOrWhiteSpace());
コード例 #4
0
ファイル: frmMain.cs プロジェクト: nthungmta207/TAMS_V2
        //Check SENTENCE trong CSDL và Thêm RESULT
        public float CheckSentence(AVL tree, List <SENTENCE> sentencesAfter, CHECKING_DOCUMENT checkDoc, int type)
        {
            float Similaryty = 0;

            try
            {
                if (type == 0)//kiểm tra CHECKING_DOCUMENT với tree
                {
                    var         watch     = System.Diagnostics.Stopwatch.StartNew();
                    int         Count     = 0;
                    List <long> listIdDoc = new List <long>();
                    for (int i = 0; i < sentencesAfter.Count; i++)
                    {
                        //nếu câu trùng trong CSDL  thì thêm RESULT
                        if (sentencesAfter[i].Hash_Value != null && tree.Find(sentencesAfter[i].Hash_Value.Value) == true)
                        {
                            //Tìm SENTENCE trùng
                            F_SENTENCE fsentence = new F_SENTENCE();
                            long       hash      = sentencesAfter[i].Hash_Value.Value;
                            SENTENCE   sentence  = fsentence.GetSingleByCondition(x => x.Hash_Value == hash);
                            //Thêm RESULT
                            RESULT res = new RESULT();
                            res.Sentence_ID                = sentence.Sentence_ID;
                            res.Checking_Document_ID       = checkDoc.Document_ID;
                            res.Checking_Sentence_Position = i + 1;
                            F_SENTENCE_DOCUMENT fsd = new F_SENTENCE_DOCUMENT();
                            var listFsd             = fsd.GetMany(x => x.Sentence_ID == sentence.Sentence_ID, null);
                            foreach (var item in listFsd)
                            {
                                res.Document_IDs = res.Document_IDs + item.Document_ID.ToString() + ",";//thêm DOCUMENT có câu trùng
                                var find = listIdDoc.Where(x => x == item.Document_ID);
                                if (find == null)
                                {
                                    listIdDoc.Add(item.Document_ID.Value);
                                }
                            }
                            F_RESULT fRes = new F_RESULT();
                            fRes.Add(res);
                            fRes.Save();
                            Count++;
                        }
                    }
                    float count = 0;
                    foreach (var item in sentencesAfter)
                    {
                        if (item.Hash_Value != null)
                        {
                            count++;
                        }
                    }
                    Similaryty = (float)Count / count * 100;
                    watch.Stop();
                    var elapsedMs = watch.ElapsedMilliseconds;
                    MessageBox.Show("Độ tương đồng là " + Similaryty.ToString() + "%\n" + "Thời gian xử lý: " + elapsedMs.ToString() + "ms");
                }
                if (type == 1)//xác nhận CHECKING_DOCUMENT vào DOCUMENT
                {
                    //tạo DOCUMENT mới
                    F_DOCUMENT fDoc = new F_DOCUMENT();
                    DOCUMENT   doc  = new DOCUMENT();
                    doc.Name = checkDoc.Name;
                    fDoc.Add(doc);
                    fDoc.Save();
                    // Xóa hết RESULT ở CHECKING_DOCUMENT cũ


                    for (int i = 0; i < sentencesAfter.Count; i++)
                    {
                        //nếu câu trùng với câu trong tree
                        if (sentencesAfter[i].Hash_Value != null && tree.Find(sentencesAfter[i].Hash_Value.Value) == true)
                        {
                            //Tìm SENTENCE trong CSDL
                            F_SENTENCE fSentence = new F_SENTENCE();
                            long       hashCode  = sentencesAfter[i].Hash_Value.Value;
                            var        sentence  = fSentence.GetSingleByCondition(x => x.Hash_Value == hashCode);
                            //Thêm SENTENCE_DOCUMENT
                            F_SENTENCE_DOCUMENT fSenDoc = new F_SENTENCE_DOCUMENT();
                            SENTENCE_DOCUMENT   senDoc  = new SENTENCE_DOCUMENT();
                            senDoc.Document_ID = doc.Document_ID;
                            senDoc.Sentence_ID = sentence.Sentence_ID;
                            senDoc.Position    = i.ToString();
                            fSenDoc.Add(senDoc);
                            fSenDoc.Save();
                            //Xóa RESULT
                            F_RESULT fRes = new F_RESULT();
                            fRes.DeleteMulti(x => x.Checking_Document_ID == checkDoc.Document_ID && x.Sentence_ID == sentence.Sentence_ID);
                            fRes.Save();
                        }
                        //nếu câu không trùng với câu trong tree
                        if (sentencesAfter[i].Hash_Value != null && tree.Find(sentencesAfter[i].Hash_Value.Value) == false)
                        {
                            //Thêm SENTENCE mới
                            SENTENCE sentence = new SENTENCE();
                            sentence.Sentence_Content = sentencesAfter[i].Sentence_Content;
                            sentence.Hash_Value       = sentencesAfter[i].Hash_Value;
                            F_SENTENCE fSentence = new F_SENTENCE();
                            fSentence.Add(sentence);
                            fSentence.Save();
                            //thêm node vào tree
                            tree.Add(sentence.Hash_Value.Value);
                            //Thêm SENT
                            F_SENTENCE_DOCUMENT fSenDoc = new F_SENTENCE_DOCUMENT();
                            SENTENCE_DOCUMENT   senDoc  = new SENTENCE_DOCUMENT();
                            senDoc.Document_ID = doc.Document_ID;
                            senDoc.Sentence_ID = sentence.Sentence_ID;
                            senDoc.Position    = i.ToString();
                            fSenDoc.Add(senDoc);
                            fSenDoc.Save();
                        }
                    }
                    //Xóa CHECKING_DOCUMENT
                    F_CHECKING_DOCUMENT fCheckDoc      = new F_CHECKING_DOCUMENT();
                    CHECKING_DOCUMENT   deleteCheckDoc = new CHECKING_DOCUMENT();
                    deleteCheckDoc = fCheckDoc.GetSingleById(checkDoc.Document_ID);
                    fCheckDoc.Delete(deleteCheckDoc);
                    fCheckDoc.Save();
                }
                return(Similaryty);
            }
            catch (DbEntityValidationException dbEx)
            {
                string ex = "";
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        ex = ex + "Property: " + validationError.PropertyName + "Error: " + validationError.ErrorMessage + "\n";
                    }
                }
                MessageBox.Show(ex);
                return(0);
            }
        }
コード例 #5
0
 public void SubstringPreceding_WithSentenceStringAndEmptyString_ExpectsSentenceString()
 => Equal(
     SENTENCE,
     SENTENCE.SubstringPreceding(EMPTY));
コード例 #6
0
 public void SubstringPreceding_WithSentenceStringAndFirstWord_ExpectsFirstWord()
 => Equal(
     WORD_FIRST,
     SENTENCE.SubstringPreceding(WORD_FIRST));
コード例 #7
0
 public void Match_WithSentenceStringAndEmptyPattern_ExpectsTrue()
 => True(SENTENCE.Match(EMPTY));
コード例 #8
0
 public void SubstringFollowing_WithSentenceStringAndLastWord_ExpectsLastWord()
 => Equal(
     WORD_LAST,
     SENTENCE.SubstringFollowing(WORD_LAST));
コード例 #9
0
 public void Right_WithSentenceStringAndNegativeGreaterLength_ExpectsSameString()
 => Equal(SENTENCE.Right(-LENGTH_GREATER), SENTENCE);
コード例 #10
0
 public void Right_WithSentenceStringAndZeroLength_ExpectsEmptyString()
 => Equal(SENTENCE.Right(0), EMPTY);
コード例 #11
0
 public void Right_WithSentenceStringAndNegativeWordLength_ExpectsAllButFirstWord()
 => Equal(SENTENCE.Right(-LENGTH_WORD), WORD_SEPARATOR + WORD_LAST);
コード例 #12
0
 public void Right_WithSentenceStringAndPositiveWordLength_ExpectsLastWord()
 => Equal(SENTENCE.Right(LENGTH_WORD), WORD_LAST);
コード例 #13
0
 public void Left_WithSentenceStringAndPositiveGreaterLength_ExpectsSameString()
 => Equal(SENTENCE.Left(LENGTH_GREATER), SENTENCE);
コード例 #14
0
 public void EnsureStartsWith_WithSentenceStringAndFirstWord_ExpectsSentenceString()
 => Equal(
     SENTENCE,
     SENTENCE.EnsureStartsWith(WORD_FIRST));
コード例 #15
0
 public void Match_WithSentenceStringAndFirstWordPattern_ExpectsTrue()
 => True(SENTENCE.Match(WORD_FIRST));
コード例 #16
0
 public void SubstringFollowing_WithSentenceStringAndFirstWord_ExpectsSentenceString()
 => Equal(
     SENTENCE,
     SENTENCE.SubstringFollowing(WORD_FIRST));
コード例 #17
0
 public void Match_WithSentenceStringAndSamePattern_ExpectsTrue()
 => True(SENTENCE.Match(SENTENCE));
コード例 #18
0
 public void SubstringPreceding_WithSentenceStringAndUnknownWord_Throws()
 => Throws <ArgumentOutOfRangeException>(() => SENTENCE.SubstringPreceding(WORD));
コード例 #19
0
 public void Match_WithSentenceStringAndUnknownWordPattern_ExpectsFalse()
 => False(SENTENCE.Match(WORD));
コード例 #20
0
 public void SubstringPreceding_WithSentenceStringAndLastWord_ExpectsSentenceString()
 => Equal(
     SENTENCE,
     SENTENCE.SubstringPreceding(WORD_LAST));
コード例 #21
0
 public void EnsureEndsWith_WithSentenceStringAndUnknownWord_ExpectsConcatenationAtEnd()
 => Equal(
     SENTENCE + WORD,
     SENTENCE.EnsureEndsWith(WORD));
コード例 #22
0
 public void NullOrEmpty_WithSentenceString_ExpectsFalse()
 => False(SENTENCE.IsNullOrEmpty());
コード例 #23
0
 public void EnsureEndsWith_WithSentenceStringAndLastWord_ExpectsSentenceString()
 => Equal(
     SENTENCE,
     SENTENCE.EnsureEndsWith(WORD_LAST));
コード例 #24
0
 public void FormatWith_WithUnformattedString_ExpectsSameString()
 => Equal(SENTENCE.FormatWith(), SENTENCE);
コード例 #25
0
 public void EnsureStartsWith_WithNullValue_Throws()
 => Throws <ArgumentNullException>(() => SENTENCE.EnsureStartsWith(NULL));
コード例 #26
0
ファイル: frmMain.cs プロジェクト: nthungmta207/TAMS_V2
        public List <SENTENCE> ReadWord(CHECKING_DOCUMENT checkDoc, int type)
        {
            List <SENTENCE> sentencesAfter = new List <SENTENCE>();
            string          filePath       = "";

            filePath = checkDoc.Name;
            Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
            object miss     = System.Reflection.Missing.Value;
            object path     = filePath;
            object readOnly = false;

            Microsoft.Office.Interop.Word.Document docs = new Microsoft.Office.Interop.Word.Document();
            try
            {
                docs = word.Documents.Open(ref path, ref miss,
                                           ref readOnly, ref miss, ref miss, ref miss, ref miss,
                                           ref miss, ref miss, ref miss, ref miss,
                                           ref miss, ref miss, ref miss, ref miss, ref miss);

                docs.ActiveWindow.Selection.WholeStory();
                docs.ActiveWindow.Selection.Copy();

                IDataObject data        = Clipboard.GetDataObject();
                string      TextContent = data.GetData(DataFormats.UnicodeText).ToString();

                //for (int i = 0; i < docs.Paragraphs.Count; i++)
                //{
                //    tmp += " \r\n " + docs.Paragraphs[i + 1].Range.Text.ToString();
                //}

                char[] DauCau = new char[] { '!', '?', '.', '\t', '\n', '\r' };
                //string pattern = @"[\t \. \! \; \? \r \n] \s+" ;
                //string pattern = @"[\t \. \! \; \? \n] \s+";

                //string[] sentences = Regex.Split(TextContent, pattern);
                // MessageBox.Show("Đọc file Word xong");

                //Lưu file vừa mở vào CHECKING_DOCUMENT



                //Thêm content và Hash_Value
                string[] sentences = TextContent.Split(DauCau, StringSplitOptions.RemoveEmptyEntries);

                for (int i = 0; i < sentences.Length; i++)
                {
                    SENTENCE nSentence = new SENTENCE();
                    nSentence.Sentence_Content = sentences[i].Trim();
                    sentencesAfter.Add(nSentence);
                }
                //MessageBox.Show("Tách câu xong, Bỏ khoảng trắng thừa xong");
                for (int i = 0; i < sentencesAfter.Count; i++)
                {
                    if (sentences[i].Length > 30)
                    {
                        string tmp1 = sentencesAfter[i].Sentence_Content;
                        sentencesAfter[i].Hash_Value = tmp1.GetHashCode();
                    }
                }
                // MessageBox.Show("Hash xong");
                return(sentencesAfter);


                //Check SENTENCE và lưu RESULT trong CSDL
                //MessageBox.Show("Xong");
                // richTextBoxt = data.GetData(DataFormats.UnicodeText).ToString();
            }
            catch (Exception ex)
            {
                docs.Close();
                word.Quit(false);
                word = null;
                GC.Collect();
                MessageBox.Show("Chương trình gặp lỗi: " + ex.ToString());
                return(sentencesAfter);
            }
            finally
            {
                docs.Close();
                word.Quit(false);
                word = null;
                GC.Collect();
            }
        }
コード例 #27
0
 public void Left_WithSentenceStringAndPositiveWordLength_ExpectsFirstWord()
 => Equal(SENTENCE.Left(LENGTH_WORD), WORD_FIRST);