স্পারসিটির এই ব্যাখ্যাটি কি সঠিক?


10

প্যাকেজ removeSparseTermsথেকে ফাংশনটির ডকুমেন্টেশন অনুসারে tm, স্পারসিটি এটিই জড়িত:

A term-document matrix where those terms from x are removed which have at least a sparse percentage of empty (i.e., terms occurring 0 times in a document) elements. I.e., the resulting matrix contains only terms with a sparse factor of less than sparse.

সুতরাং, sparseএটির সঠিক ব্যাখ্যাটি কি .99 এর সমান হলে বলা যায় , তবে আমরা কেবলমাত্র পদগুলির সর্বাধিক 1% তে উপস্থিত শর্তগুলি সরিয়ে দিচ্ছি?


এই প্রশ্নটি স্ট্যাকওভারফ্লোয়ের জন্য আরও উপযুক্ত, যেখানে টিএম এবং পাঠ্য-খনির জন্য ট্যাগ রয়েছে।
কেন বেনোইট

উত্তর:


16

হ্যাঁ , যদিও এখানে আপনার বিভ্রান্তি বোধগম্য, যেহেতু "স্পারসিটি" শব্দটি এই প্রসঙ্গে পরিষ্কারভাবে সংজ্ঞা দেওয়া শক্ত।

sparseতর্কের অর্থে removeSparseTerms(), স্পারসিটি বলতে একটি শর্তের জন্য আপেক্ষিক দলিলের ফ্রিকোয়েন্সিয়ের প্রান্তকে বোঝায় , যার উপরে শব্দটি সরানো হবে। এখানে সম্পর্কিত ডকুমেন্ট ফ্রিকোয়েন্সি মানে একটি অনুপাত। কমান্ডের সহায়তা পৃষ্ঠায় যেমন বলা হয়েছে (যদিও এটি খুব স্পষ্ট নয়), স্পারসিটি ছোট হওয়ার সাথে সাথে এটি 1.0 এ পৌঁছায়। (দ্রষ্টব্য যে স্পারসিটি 0 বা 1.0 এর মান নিতে পারে না, কেবল এর মধ্যে মানগুলি))

সুতরাং আপনার ব্যাখ্যাটি সঠিক যা এতে sparse = 0.99কেবলমাত্র পদগুলি সরিয়ে ফেলবে যা ০.৯৯৯ এর চেয়ে বেশি বিরল। এর সঠিক ব্যাখ্যাটি sparse = 0.99হ'ল শব্দটির জন্য , আপনি সমস্ত পদ ধরে রাখবেন যার জন্য , যেখানে নথির সংখ্যা - এই ক্ষেত্রে সম্ভবত সমস্ত পদ বজায় থাকবে (নীচের উদাহরণ দেখুন) ।jdfj>N(10.99)N

অন্যান্য চূড়ান্ত কাছাকাছি, যদি sparse = .01, তবে কেবলমাত্র (প্রায়) প্রতিটি নথিতে উপস্থিত শর্তাদি বজায় রাখা হবে। (অবশ্যই এটি শর্তাবলীর সংখ্যা এবং নথির সংখ্যার উপর নির্ভর করে এবং প্রাকৃতিক ভাষায়, "দ্য" এর মতো সাধারণ শব্দগুলি প্রতিটি নথিতে দেখা যায় এবং তাই এটি কখনই "বিরল" হয় না))

০.৯৯ এর স্পারসিটির প্রান্তিকের উদাহরণ, যেখানে একটি শব্দটি বেশিরভাগ ক্ষেত্রে দেখা যায় (প্রথম উদাহরণ) 0.01 নথির চেয়ে কম, এবং (দ্বিতীয় উদাহরণ) কেবল 0.01 নথির বেশি:

> # second term occurs in just 1 of 101 documents
> myTdm1 <- as.DocumentTermMatrix(slam::as.simple_triplet_matrix(matrix(c(rep(1, 101), rep(1,1), rep(0, 100)), ncol=2)), 
+                                weighting = weightTf)
> removeSparseTerms(myTdm1, .99)
<<DocumentTermMatrix (documents: 101, terms: 1)>>
Non-/sparse entries: 101/0
Sparsity           : 0%
Maximal term length: 2
Weighting          : term frequency (tf)
> 
> # second term occurs in 2 of 101 documents
> myTdm2 <- as.DocumentTermMatrix(slam::as.simple_triplet_matrix(matrix(c(rep(1, 101), rep(1,2), rep(0, 99)), ncol=2)), 
+                                weighting = weightTf)
> removeSparseTerms(myTdm2, .99)
<<DocumentTermMatrix (documents: 101, terms: 2)>>
Non-/sparse entries: 103/99
Sparsity           : 49%
Maximal term length: 2
Weighting          : term frequency (tf)

প্রকৃত পাঠ্য এবং শর্তাদি সহ কয়েকটি অতিরিক্ত উদাহরণ এখানে দেওয়া হয়েছে:

> myText <- c("the quick brown furry fox jumped over a second furry brown fox",
              "the sparse brown furry matrix",
              "the quick matrix")

> require(tm)
> myVCorpus <- VCorpus(VectorSource(myText))
> myTdm <- DocumentTermMatrix(myVCorpus)
> as.matrix(myTdm)
    Terms
Docs brown fox furry jumped matrix over quick second sparse the
   1     2   2     2      1      0    1     1      1      0   1
   2     1   0     1      0      1    0     0      0      1   1
   3     0   0     0      0      1    0     1      0      0   1
> as.matrix(removeSparseTerms(myTdm, .01))
    Terms
Docs the
   1   1
   2   1
   3   1
> as.matrix(removeSparseTerms(myTdm, .99))
    Terms
Docs brown fox furry jumped matrix over quick second sparse the
   1     2   2     2      1      0    1     1      1      0   1
   2     1   0     1      0      1    0     0      0      1   1
   3     0   0     0      0      1    0     1      0      0   1
> as.matrix(removeSparseTerms(myTdm, .5))
    Terms
Docs brown furry matrix quick the
   1     2     2      0     1   1
   2     1     1      1     0   1
   3     0     0      1     1   1

শেষ উদাহরণে sparse = 0.34, নথিগুলির দুই-তৃতীয়াংশের মধ্যে কেবলমাত্র পদগুলি বজায় রাখা হয়েছিল।

ডকুমেন্টের ফ্রিকোয়েন্সি ভিত্তিতে ডকুমেন্ট-টার্ম ম্যাট্রিক্স থেকে শর্তগুলি ছাঁটাই করার বিকল্প বিকল্পটি হ'ল পাঠ্য বিশ্লেষণ প্যাকেজ কোয়ান্টেড । এখানে একই কার্যকারিতাটি স্বল্পতা নয় বরং শর্তাদির ডকুমেন্টের ফ্রিকোয়েন্সিটিকে সরাসরি বোঝায় (যেমনটি টিএফ-আইডিএফ )।

> require(quanteda)
> myDfm <- dfm(myText, verbose = FALSE)
> docfreq(myDfm)
     a  brown    fox  furry jumped matrix   over  quick second sparse    the 
     1      2      1      2      1      2      1      2      1      1      3 
> trim(myDfm, minDoc = 2)
Features occurring in fewer than 2 documents: 6 
Document-feature matrix of: 3 documents, 5 features.
3 x 5 sparse Matrix of class "dfmSparse"
       features
docs    brown furry the matrix quick
  text1     2     2   1      0     1
  text2     1     1   1      1     0
  text3     0     0   1      1     1

এই ব্যবহারটি আমার কাছে আরও সহজবোধ্য বলে মনে হচ্ছে।


1
কেনে সাইটটিতে আপনাকে স্বাগতম। আপনার দুর্দান্ত উত্তরের জন্য ধন্যবাদ। আমি আশা করি আমরা আপনার আরও কিছু দেখতে পাবেন।
গ্লেন_বি -রিনস্টেট মনিকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.