コード例 #1
0
        public void TestMethod_Shingle()
        {
            var str = "Location map San Francisco Central.png";
            var res = Shingle.CulculateSimple(str, str);

            Assert.AreEqual((double)1, res);
        }
コード例 #2
0
        public void TestMethod_GetAllFilesNames()
        {
            var wiki = new Wikipedia
            {
                List   = ListType.Geosearch,
                Format = Format.Json,
                Limit  = 50
            };

            wiki.ExternParameters.AddRange(new List <Tuple <string, object> >()
            {
                new Tuple <string, object>("gsradius", 10000),
                new Tuple <string, object>("gscoord", string.Join("|", new[] { 37.786971, -122.399677 }))
            });

            var responce = wiki.Search <GeoRootObject>(null);

            TextWriter fileRaw = File.CreateText(DateTime.Now.ToString("yyMMddhhss") + "Raw.txt");
            TextWriter file    = File.CreateText(DateTime.Now.ToString("yyMMddhhss") + ".txt");
            List <Tuple <int, string> > wikiImages = new List <Tuple <int, string> >();

            foreach (Geosearch geosearch in responce.Query.GeoSearch)
            {
                var wikiFile = new Wikipedia {
                    Format = Format.Json
                };
                wikiFile.ExternParameters.AddRange(new List <Tuple <string, object> >()
                {
                    new Tuple <string, object>("prop", "images"),
                    new Tuple <string, object>("pageids", geosearch.PageId)
                });

                var responceFile = wikiFile.Search <ImagesRootObject>(null);
                wikiImages.AddRange(from images in responceFile.Query.Pages.Values from image in images.Images select new Tuple <int, string>(geosearch.PageId, image.Title.Replace("File:", "")));
            }

            foreach (var t in wikiImages)
            {
                fileRaw.WriteLine($"{t.Item1}; {t.Item2}");
            }
            for (int i = 0; i < wikiImages.Count; i++)
            {
                for (int j = i + 1; j < wikiImages.Count; j++)
                {
                    var res = Shingle.CulculateSimple(wikiImages[i].Item2, wikiImages[j].Item2);
                    if (res > 0 && res < 1)
                    {
                        file.WriteLine($"{wikiImages[i].Item1}; {wikiImages[j].Item1}; {(int)(res*10000)}; {wikiImages[i].Item2}; {wikiImages[j].Item2};");
                    }
                }
            }
        }
コード例 #3
0
 private static IEnumerable <Tuple <double, string, string> > Compare(List <Tuple <int, string> > wikiImages)
 {
     for (var i = 0; i < wikiImages.Count; i++)
     {
         for (var j = i + 1; j < wikiImages.Count; j++)
         {
             var res = Shingle.CulculateSimple(wikiImages[i].Item2, wikiImages[j].Item2);
             if (res > 0 && res < 1)
             {
                 yield return(new Tuple <double, string, string>(res, wikiImages[i].Item2, wikiImages[j].Item2));
             }
         }
     }
 }