Ejemplo n.º 1
0
        private void CreateSimilarityMatrix()
        {
            if (!_projectService.AreAllVarietiesCompared)
            {
                return;
            }

            var optics = new Optics <Variety>(variety => variety.VarietyPairs.Select(pair =>
            {
                double score = 0;
                switch (_similarityMetric)
                {
                case SimilarityMetric.Lexical:
                    score = pair.LexicalSimilarityScore;
                    break;

                case SimilarityMetric.Phonetic:
                    score = pair.PhoneticSimilarityScore;
                    break;
                }
                return(Tuple.Create(pair.GetOtherVariety(variety), 1.0 - score));
            }).Concat(Tuple.Create(variety, 0.0)), 2);

            _modelVarieties.Clear();
            _modelVarieties.AddRange(optics.ClusterOrder(_projectService.Project.Varieties).Select(oe => oe.DataObject));
            SimilarityMatrixVarietyViewModel[] vms = _modelVarieties.Select(v => new SimilarityMatrixVarietyViewModel(_similarityMetric, _modelVarieties, v)).ToArray();
            Varieties = new ReadOnlyList <SimilarityMatrixVarietyViewModel>(vms);
            IsEmpty   = false;
        }
Ejemplo n.º 2
0
        private void WriteOutput(TextWriter outputWriter)
        {
            var optics = new Optics <Variety>(variety => variety.VarietyPairs
                                              .Select(pair => Tuple.Create(pair.GetOtherVariety(variety), 1.0 - pair.LexicalSimilarityScore))
                                              .Concat(Tuple.Create(variety, 0.0)), 2);

            Variety[] varieties = optics.ClusterOrder(Project.Varieties).Select(e => e.DataObject).ToArray();
            foreach (Variety variety in varieties)
            {
                outputWriter.Write("\t");
                outputWriter.Write(variety.Name);
            }
            outputWriter.WriteLine();
            for (int i = 0; i < varieties.Length; i++)
            {
                outputWriter.Write(varieties[i].Name);
                int len = IsHalf ? i + 1 : varieties.Length;
                for (int j = 0; j < len; j++)
                {
                    outputWriter.Write("\t");
                    if (i == j)
                    {
                        outputWriter.Write(IsDistance ? "0.00" : "1.00");
                    }
                    else
                    {
                        VarietyPair varietyPair = varieties[i].VarietyPairs[varieties[j]];
                        double      score       = IsDistance ? 1.0 - varietyPair.LexicalSimilarityScore : varietyPair.LexicalSimilarityScore;
                        outputWriter.Write("{0:0.00}", score);
                    }
                }
                outputWriter.WriteLine();
            }
        }
Ejemplo n.º 3
0
        public void Export(Stream stream, CogProject project, SimilarityMetric similarityMetric)
        {
            var optics = new Optics <Variety>(variety => variety.VarietyPairs.Select(pair =>
            {
                double score = 0;
                switch (similarityMetric)
                {
                case SimilarityMetric.Lexical:
                    score = pair.LexicalSimilarityScore;
                    break;

                case SimilarityMetric.Phonetic:
                    score = pair.PhoneticSimilarityScore;
                    break;
                }
                return(Tuple.Create(pair.GetOtherVariety(variety), 1.0 - score));
            }).Concat(Tuple.Create(variety, 0.0)), 2);

            Variety[] varietyArray = optics.ClusterOrder(project.Varieties).Select(oe => oe.DataObject).ToArray();
            using (var writer = new StreamWriter(new NonClosingStreamWrapper(stream)))
            {
                foreach (Variety variety in varietyArray)
                {
                    writer.Write("\t");
                    writer.Write(variety.Name);
                }
                writer.WriteLine();
                for (int i = 0; i < varietyArray.Length; i++)
                {
                    writer.Write(varietyArray[i].Name);
                    for (int j = 0; j < varietyArray.Length; j++)
                    {
                        writer.Write("\t");
                        if (i != j)
                        {
                            VarietyPair varietyPair = varietyArray[i].VarietyPairs[varietyArray[j]];
                            double      score       = similarityMetric == SimilarityMetric.Lexical ? varietyPair.LexicalSimilarityScore : varietyPair.PhoneticSimilarityScore;
                            writer.Write("{0:0.00}", score);
                        }
                    }
                    writer.WriteLine();
                }
            }
        }
Ejemplo n.º 4
0
        public void Export(Stream stream, CogProject project, SimilarityMetric similarityMetric)
        {
            var optics = new Optics<Variety>(variety => variety.VarietyPairs.Select(pair =>
                {
                    double score = 0;
                    switch (similarityMetric)
                    {
                        case SimilarityMetric.Lexical:
                            score = pair.LexicalSimilarityScore;
                            break;
                        case SimilarityMetric.Phonetic:
                            score = pair.PhoneticSimilarityScore;
                            break;
                    }
                    return Tuple.Create(pair.GetOtherVariety(variety), 1.0 - score);
                }).Concat(Tuple.Create(variety, 0.0)), 2);

            Variety[] varietyArray = optics.ClusterOrder(project.Varieties).Select(oe => oe.DataObject).ToArray();
            using (var writer = new StreamWriter(new NonClosingStreamWrapper(stream)))
            {
                foreach (Variety variety in varietyArray)
                {
                    writer.Write("\t");
                    writer.Write(variety.Name);
                }
                writer.WriteLine();
                for (int i = 0; i < varietyArray.Length; i++)
                {
                    writer.Write(varietyArray[i].Name);
                    for (int j = 0; j < varietyArray.Length; j++)
                    {
                        writer.Write("\t");
                        if (i != j)
                        {
                            VarietyPair varietyPair = varietyArray[i].VarietyPairs[varietyArray[j]];
                            double score = similarityMetric == SimilarityMetric.Lexical ? varietyPair.LexicalSimilarityScore : varietyPair.PhoneticSimilarityScore;
                            writer.Write("{0:0.00}", score);
                        }
                    }
                    writer.WriteLine();
                }
            }
        }
Ejemplo n.º 5
0
 private void CreateSimilarityMatrix()
 {
     var optics = new Optics<Variety>(variety => variety.VarietyPairs.Select(pair =>
         {
             double score = 0;
             switch (_similarityMetric)
             {
                 case SimilarityMetric.Lexical:
                     score = pair.LexicalSimilarityScore;
                     break;
                 case SimilarityMetric.Phonetic:
                     score = pair.PhoneticSimilarityScore;
                     break;
             }
             return Tuple.Create(pair.GetOtherVariety(variety), 1.0 - score);
         }).Concat(Tuple.Create(variety, 0.0)), 2);
     _modelVarieties.Clear();
     _modelVarieties.AddRange(optics.ClusterOrder(_projectService.Project.Varieties).Select(oe => oe.DataObject));
     SimilarityMatrixVarietyViewModel[] vms = _modelVarieties.Select(v => new SimilarityMatrixVarietyViewModel(_similarityMetric, _modelVarieties, v)).ToArray();
     Varieties = new ReadOnlyList<SimilarityMatrixVarietyViewModel>(vms);
     IsEmpty = false;
 }