Пример #1
0
        private string PickMostSimilar(string previous, IEnumerable <string> options)
        {
            //Order by word vector similarity
            var sims = options.Select(a => (a, Task.Run(() => _wordVectors.Similarity(previous, a))))
                       .Select(a => (a.a, a.Item2.Result ?? 0))
                       .OrderByDescending(a => a.Item2);

            //Take the most similar
            return(sims
                   .Select(a => a.a)
                   .First());
        }
Пример #2
0
        public async Task GetVectorSimilarity(string a, string b)
        {
            var result = await _wordVectors.Similarity(a, b);

            if (!result.HasValue)
            {
                var av = await _wordVectors.Vector(a);

                if (av == null)
                {
                    await TypingReplyAsync($"I don't know the word `{a}`");
                }
                var bv = await _wordVectors.Vector(b);

                if (bv == null)
                {
                    await TypingReplyAsync($"I don't know the word `{b}`");
                }
            }
            else if (result < 0.2)
            {
                await TypingReplyAsync($"`{a}` and `{b}` are very different ({result:0.0##})");
            }
            else if (result < 0.5)
            {
                await TypingReplyAsync($"`{a}` and `{b}` are not very similar ({result:0.0##})");
            }
            else if (result < 0.65)
            {
                await TypingReplyAsync($"`{a}` and `{b}` are a bit similar ({result:0.0##})");
            }
            else if (result < 0.85)
            {
                await TypingReplyAsync($"`{a}` and `{b}` are quite similar ({result:0.0##})");
            }
            else
            {
                await TypingReplyAsync($"`{a}` and `{b}` are analagous ({result:0.0##})");
            }
        }