天道酬勤,学无止境

如何在文本框中找到最长的句子和平均句子长度?(How do I find the longest sentence and the average sentence length in a textbox?)

问题

在文本框中输入几个句子后,我需要通过单击按钮找到文本框中最长的句子。 最长的句子应显示在 MessageBox 中。

另一个按钮应该在 MessageBox 中显示句子的平均长度。

回答1

好的,我是新手,但我会尽力提供帮助!

我会考虑将文本框中输入的句子拆分为数组或列表,然后进行处理。

Dim sentences As String()

sentences = TextBox1.Text.Split("?")
Dim avgSum As Double = 0
Dim avg As Integer = 0
Dim longest As Integer = 0

For Each sentence As String In sentences
    If sentence.Length < longest Then longest = sentence.Length
    avgSum = avgSum + sentence.Length
Next
avg = avgSum / sentences.Length

MsgBox("Average is: " + avg)
MsgBox("Longest is: " + longest)
回答2

定义三个函数:第一个函数提取所有句子,第二个函数确定最长的句子,第三个函数确定平均句子长度。

提取所有句子

    ''' <summary>
    ''' Extracts all sentences from a text block. It is assumed that a sentence is terminated by either a period (.), a question mark (?), or an exclamation mark (!).
    ''' </summary>
    ''' <param name="text">The text block as string.</param>
    ''' <returns>An array of sentences.</returns>
    ''' <remarks></remarks>
    Function sentences(ByVal text As String) As String()
        Dim snts(Len(text)) As String
        Dim curPeriodPos As Integer
        Dim nextPeriodPos As Integer
        Dim longestSnt As String
        Dim nextSnt As String
        Dim i As Integer

        text = text + " "
        text = Replace(text, "? ", ". ")
        text = Replace(text, "! ", ". ")

        curPeriodPos = InStr(text, ". ")
        longestSnt = Mid(text, 1, curPeriodPos)
        i = 0
        Do While curPeriodPos + 1 < Len(text)
            nextPeriodPos = InStr(curPeriodPos + 1, text, ". ")
            nextSnt = Mid(text, curPeriodPos + 1, nextPeriodPos - curPeriodPos + 1)
            snts(i) = nextSnt
            i += 1
            curPeriodPos = nextPeriodPos
        Loop

        Return snts
    End Function

确定最长的句子

    ''' <summary>
    ''' Determines the longest sentence among an array of senetences.
    ''' </summary>
    ''' <param name="sentencesArray">A string array of sentences.</param>
    ''' <returns> A sentence as string.</returns>
    ''' <remarks></remarks>
    Function longestSentence(ByVal sentencesArray() As String) As String
        Dim longestSnt As String = ""

        For Each sentence As String In sentencesArray
            If Len(sentence) > Len(longestSnt) Then
                longestSnt = sentence
            End If
        Next sentence

        Return longestSnt
    End Function

确定平均句子长度

    ''' <summary>
    ''' Determines the average sentence length of sentences in an array of sentences.
    ''' </summary>
    ''' <param name="sentencesArray">A string array of sentences.</param>
    ''' <returns>An integer representing the average sentence length.</returns>
    ''' <remarks></remarks>
    Function averageSentenceLength(ByVal sentencesArray() As String) As Double
        Dim sentenceLengths(sentencesArray.Length) As Integer
        Dim total As Integer = 0
        Dim average As Double
        Dim counter As Integer = 0

        For i As Integer = 0 To sentencesArray.Length - 1
            sentenceLengths(i) = Len(sentencesArray(i))
            If sentenceLengths(i) > 0 Then
                total += sentenceLengths(i)
                counter += 1
            End If
        Next i

        average = CDbl(total) / CDbl(counter)

        Return average
    End Function

这些函数可以在按钮的事件处理程序中调用,如下所示:

Private Sub DisplayLongestSentence() Handles longestSententeceButton.Click
    Dim text As String = TextBox1.Text
    MessageBox.Show(longestSentence(sentences(text)))
End Sub

Private Sub DisplayAverageSentenceLength() Handles averageSententeceLengthButton.Click
    Dim text As String = TextBox1.Text
    MessageBox.Show(averageSentenceLength(sentences(text)))
End Sub
标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何使这个随机文本生成器在 Python 中更高效?(How to make this random text generator more efficient in Python?)
    问题 我正在研究一个随机文本生成器 - 不使用马尔可夫链 - 目前它没有太多问题。 首先,这是我的代码流: 输入一个句子作为输入 - 这被称为触发字符串,被分配给一个变量 - 获取触发字符串中最长的单词在所有 Project Gutenberg 数据库中搜索包含此单词的句子 - 无论大写小写 - 返回包含我在第 3 步中提到的单词的最长句子将步骤 1 和步骤 4 中的句子附加在一起将步骤 4 中的句子指定为新的“触发”句子并重复该过程。 请注意,我必须在第二句话中获得最长的单词并继续这样,依此类推- 这是我的代码: import nltk from nltk.corpus import gutenberg from random import choice triggerSentence = raw_input("Please enter the trigger sentence: ")#get input str longestLength = 0 longestString = "" listOfSents = gutenberg.sents() #all sentences of gutenberg are assigned -list of list format- listOfWords = gutenberg.words()# all words in
  • Python:在随机段落中找到最长/最短的句子?(Python: Finding The Longest/Shortest Sentence In A Random Paragraph?)
    问题 我正在使用 Python 2.7 并且需要 2 个函数来查找随机段落中最长和最短的句子(就字数而言)。 例如,如果我选择放入这一段: “将您的海滨度假胜地与加利福尼亚北部詹纳葡萄酒之乡的红白葡萄酒配对。索诺玛县的这座小海滨城市坐落在俄罗斯河口附近,整个夏天,海豹和吠叫的加利福尼亚海狮都在那里沙嘴,晒了几个小时。您可以在罗斯堡州立历史公园游泳和徒步旅行,了解早期俄罗斯猎人,他们被该地区的海豹群吸引,因为他们的毛皮。堡垒的葡萄园,葡萄藤可以追溯到 1817 年,是加州最早种植葡萄的地方之一。” 输出应该是36和16,其中 36 意味着最长的句子中有 36 个单词,最短的句子中有 16 个单词。 回答1 您需要一种将段落拆分为句子并计算句子中单词数的方法。 您可以将 nltk 包用于两者: from nltk.tokenize import sent_tokenize, word_tokenize # $ pip install nltk sentences = sent_tokenize(paragraph) word_count = lambda sentence: len(word_tokenize(sentence)) print(min(sentences, key=word_count)) # the shortest sentence by word count
  • 数据分析(EDA)学习总结!
    探索性数据分析(Exploratory Data Analysis,EDA)是一种探索数据的结构和规律的一种数据分析方法。其主要的工作包含:对数据进行清洗,对数据进行描述(描述统计量,图表),查看数据的分布,比较数据之间的关系,培养对数据的直觉和对数据进行总结。EDA可以帮助我们找到适合的数据模型,本文针对文本数据,将进行具体的数据探索性分析讲解。一、数据及背景https://tianchi.aliyun.com/competition/entrance/531810/information(阿里天池-零基础入门NLP赛事)二、实验环境导入需要使用的包import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom sklearn.model_selection import train_test_splitimport seaborn as snsimport scipyfrom collections import Counter三、数据探索首先,利用Pandas对数据进行读取。df_train = pd.read_csv(train_path, sep='\t')df_test = pd.read_csv(test_path, sep='\t')3.1 简单查看数据df_train.head()
  • 文本生成评价指标的进化与推翻
    文章目录 前言基于词重叠率的方法机器翻译 & 摘要 常用指标BLEUROUGENISTMETEORTER data to text 常用指标relation generation (RG)content selection (CS)content ordering (CO) 如何实现上述的评价指标CoverageDistinct image caption 常用指标CIDEr好处SPICE 词向量评价指标Greedy MatchingEmbedding AverageVector Extrema 基于语言模型的方法PPL基于 bert 的评分指标BERTSCORE拓展阅读 :BLEURT拓展阅读 :MoverScore 总结参考文献 转载来源:https://mp.weixin.qq.com/s/IKj_8sJ28HYP1pAgWtdKTg 作者:林镇坤 前言 文本生成目前的一大瓶颈是如何客观,准确的评价机器生成文本的质量。一个好的评价指标(或者设置合理的损失函数)不仅能够高效的指导模型拟合数据分布,还能够客观的让人评估文本生成模型的质量,从而进一步推动 text generation 商业化能力。 然而由于语言天生的复杂性和目前技术限制,我们目前还没有一个完美的评价指标。 本文就三方面对文本生成的评价指标介绍: 介绍了以 BLEU 为代表的基于统计的文本评价指标 就 data
  • Python:查找字符串中最长的单词(Python: Find the longest word in a string)
    问题 我正在准备考试,但我在回答一个过去的论文问题时遇到了困难。 给定一个包含句子的字符串,我想找到该句子中最长的单词并返回该单词及其长度。 编辑:我只需要返回长度,但我感谢您对原始问题的回答! 它可以帮助我了解更多。 谢谢你。 例如:string = "你好,我喜欢饼干"。 然后我的程序应该返回“Cookies”和长度 7。 现在的问题是我不允许使用 String 类中的任何函数来获得满分,而对于满分,我只能通过字符串一次。 我不允许使用 string.split() (否则不会有任何问题)并且解决方案不应该有太多的 for 和 while 语句。 字符串仅包含字母和空格,单词由一个空格分隔。 有什么建议么? 我迷路了,即我没有任何代码。 谢谢。 编辑:对不起,我误读了考试问题。 您只需要返回看起来最长的单词的长度,而不是长度 + 单词。 EDIT2 :好的,在你的帮助下,我想我正在做一些事情...... def longestword(x): alist = [] length = 0 for letter in x: if letter != " ": length += 1 else: alist.append(length) length = 0 return alist 但是它为“你好,我喜欢饼干”返回 [5, 1, 4] 所以它错过了“饼干”。 为什么? 编辑:好的
  • 如何使用Gensim的word2vec模型和python计算句子相似度(How to calculate the sentence similarity using word2vec model of gensim with python)
    问题 根据Gensim Word2Vec,我可以使用gensim包中的word2vec模型来计算2个单词之间的相似度。 例如 trained_model.similarity('woman', 'man') 0.73723527 但是,word2vec模型无法预测句子相似度。 我在gensim中发现了具有句子相似性的LSI模型,但是,似乎无法将它与word2vec模型结合使用。 我拥有的每个句子的语料库长度不是很长(少于10个字)。 那么,有没有简单的方法可以达到目标呢? 回答1 这实际上是您要问的一个非常具有挑战性的问题。 计算句子相似度需要建立句子的语法模型,了解等同的结构(例如“昨天他去商店”和“昨天他去商店”),不仅要在代词和动词中找到相似性,还要在句子中找到相似性。专有名词,在许多真实的文字示例中找到统计共现/关系,等等。 您可以尝试的最简单的方法-尽管我不知道这样做的效果如何,并且肯定不会给您带来最佳效果-首先,请删除所有“停止”字词(例如“ the”,“ an”等等),然后对两个句子中的单词运行word2vec,将一个句子中的向量求和,将另一个句子中的向量求和,然后找出两者之间的区别总和。 通过对它们进行汇总,而不是逐字逐句地进行区别,您至少不会受到词序的限制。 话虽这么说,这将以多种方式失败,而且无论如何都不是一个好的解决方案
  • 从句子中找出最长的单词-Javascript(Find out the longest word from a sentence - Javascript)
    问题 有没有办法找出Javascript中最长的单词? 它也应该忽略标点符号! 我了解逻辑,但代码...感叹 这是我们的工作- 计算在一起的字母数字字符的数量,不要用空格或任何符号分隔。 得到他们的长度。 找到所有中最大的长度。 返回最大长度的单词。 希望我让自己清楚... 回答1 拆分字符串,循环遍历各个部分,并跟踪最长的部分。 像这样的东西: var parts = sentence.split(); var longestIndex = -1; var longestWord = 0; for(var i=0; i < parts.length; i++){ if(parts[i].length > longestWord){ longestWord = parts[i].length; longestIndex = i; } } alert("longest word is " + parts[longestIndex] + ": " + longestWord + " characters"); 如果您需要分割非字母字符和空格,则需要使用正则表达式。 您可以更改此行: var parts = sentence.split(); 为此(感谢Kooilnc使用正则表达式): var parts = sentence.match(/\w[a-z]{0,}/gi)
  • 如何更改列表框中单词的颜色(How do I change the color of a word inside a listbox)
    问题 我制作了一个带有文本框的表单,它接受一个单词并搜索一堆句子以查看其中是否包含该单词。之后我必须出现这些句子并突出显示该单词。我的计划是制作一个列表框并添加里面的句子。 我的问题是如何突出显示这个词(通过改变我想的颜色)以便区分。 有没有更好的方法? 我选择了 ListBox,这样我就可以选择我要查找的句子。 编辑 根据@Thorsten Dittmar 的指示,创建一个所有者绘制的列表框。 public partial class Form1 : Form { private List<string> _items; public Form1() { InitializeComponent(); _items = new List<string>(); _items.Add("One"); _items.Add("Two"); _items.Add("Three"); listBox1.DataSource = _items; } private void listBox1_DrawItem(object sender, DrawItemEventArgs e) { e.DrawBackground(); e.DrawFocusRectangle(); e.Graphics.DrawString(_items[e.Index], new Font(FontFamily
  • 将句子拆分成单独的单词(Split a sentence into separate words)
    问题 我需要将中文句子拆分为单独的单词。 中文的问题是没有空格。 例如,该句子可能看起来像:主楼怎么走(带空格的是:主楼 怎么 走)。 目前,我可以想到一种解决方案。 我有一本带有中文单词的字典(在数据库中)。 该脚本将: 尝试在数据库(主楼)中找到句子的前两个字符, 如果主楼实际上是一个单词,并且在数据库中,脚本将尝试查找前三个字符(主楼怎)。主楼怎是单词,因此不在数据库中=>我的应用程序现在知道主楼是一个单独的单词。 尝试用其余的角色来做。 我不太喜欢这种方法,因为即使分析很小的文本,它也会查询数据库太多次。 还有其他解决方案吗? 回答1 感谢大家的帮助! 经过一番研究后,我发现了一些工作工具(牢记您的所有建议),这就是为什么我要回答自己的问题。 一个PHP类(http://www.phpclasses.org/browse/package/2431.html) Drupal模块,基本上是另一个具有4种不同细分算法的PHP解决方案(非常容易理解它的工作原理)(http://drupal.org/project/csplitter) 用于中文分词的PHP扩展(http://code.google.com/p/phpcws/) 如果您尝试在baidu.com上搜索“中文分词”,则还有其他解决方案 真挚地, qu 回答2 您可能要考虑使用trie数据结构。 您首先要从字典中构造特里
  • 如何从语料库中只找到“有趣”的词?(How can I find only 'interesting' words from a corpus?)
    问题 我正在解析句子。 我想知道每个句子的相关内容,相对于语料库的其余部分,松散地定义为“半唯一词”。 类似于亚马逊的“统计上不可能的短语”,它们似乎(通常)通过奇怪的单词串来传达一本书的特征。 我的第一遍是开始制作一个常用词表。 这淘汰了像a 、 the 、 from等简单的。很明显,这个列表变得很长。 一个想法是生成这个列表:制作一个语料库词频的直方图,去掉前 10% 或类似的东西( the出现 700 次, from 600 次开始,但micropayments只有 50 次,低于截止和因此相关)。 我今天刚刚从 Hacker News 了解到的另一个算法是 Tf idf,它看起来可能会有所帮助。 还有什么其他方法比我的两个想法更有效? 回答1 看看这篇文章(单词水平统计:在文学文本和符号序列中查找关键字,发表在Phys. Rev. E 上)。 第一页上的图片及其标题解释了重要的观察结果。 在Don Quixote 中,单词“but”和“Quixote”以相似的频率出现,但它们的频谱却大不相同(“Quixote”的出现聚集在一起,而“but”的出现间隔更均匀)。 因此,可以将“Quixote”归类为有趣的词(关键字),而忽略“but”。 它可能是也可能不是您正在寻找的,但我想熟悉这个结果不会有什么坏处。 回答2 我认为亚马逊所说的“Statiscal Improbable
  • Python:如何使用.split命令计算句子中的平均单词长度?(Python: How can I calculate the average word length in a sentence using the .split command?)
    问题 python新手在这里。 我正在尝试编写一个计算句子中平均单词长度的程序,而我必须使用.split命令来执行。 顺便说一句即时通讯使用python 3.2 这是我到目前为止写的 sentence = input("Please enter a sentence: ") print(sentence.split()) 到目前为止,我已经让用户输入了一个句子,它成功地分割了他们输入的每个单词,例如:嗨,我叫Bob,它将其分割为['hi','my','name','is','鲍勃'] 但是现在我迷路了,我不知道如何使它计算每个单词并找到句子的平均长度。 回答1 在Python 3(您似乎正在使用)中: >>> sentence = "Hi my name is Bob" >>> words = sentence.split() >>> average = sum(len(word) for word in words) / len(words) >>> average 2.6 回答2 您可能希望过滤掉标点符号和零长度单词。 >>> sentence = input("Please enter a sentence: ") 过滤掉不算在内的标点符号。 您可以根据需要在标点符号字符串中添加更多内容: >>> filtered = ''.join(filter(lambda x: x
  • Python 代码流没有按预期工作?(Python code flow does not work as expected?)
    问题 我正在尝试通过正则表达式和 python 的 NLTK 处理各种文本 - 这是在 http://www.nltk.org/book-。 我正在尝试创建一个随机文本生成器,但遇到了一个小问题。 首先,这是我的代码流: 输入一个句子作为输入 - 这被称为触发字符串,被分配给一个变量 - 获取触发字符串中最长的单词在所有 Project Gutenberg 数据库中搜索包含此单词的句子 - 无论大写小写 - 返回包含我在第 3 步中提到的单词的最长句子将步骤 1 和步骤 4 中的句子附加在一起将步骤 4 中的句子指定为新的“触发”句子并重复该过程。 请注意,我必须在第二句话中获得最长的单词并继续这样,依此类推- 到目前为止,我只能这样做一次。 当我尝试继续执行此操作时,程序只会继续打印我的搜索结果的第一句话。 它实际上应该在这个新句子中寻找最长的单词,并继续应用我上面描述的代码流。 下面是我的代码以及示例输入/输出: 样本输入 “代码之王” 样本输出 “代码挪威的领主,拥有可怕的数字,在那个最不忠的 Traytor,考多领主的帮助下,开始了一场微小的冲突,直到贝罗纳的新郎,在校对,与他进行自我比较,点对点,叛逆的Arme'获得了Arme,遏制了他的傲慢精神:总而言之,胜利落在了vs上 现在这实际上应该采用以 'Norway owne ....' 开头的句子
  • 查找两个字符串共享的所有 n 字长子字符串的最大长度(Find maximum length of all n-word-length substrings shared by two strings)
    问题 我正在努力生成一个 Python 脚本,该脚本可以找到两个字符串共享的所有 n 字长子字符串的(最长可能)长度,而不管尾部标点符号。 给定两个字符串: “这是一个示例字符串” “这也是一个示例字符串” 我希望脚本识别出这些字符串有 2 个共同的单词序列(“this is”),后跟 3 个共同单词的序列(“示例字符串”)。 这是我目前的方法: a = "this is a sample string" b = "this is also a sample string" aWords = a.split() bWords = b.split() #create counters to keep track of position in string currentA = 0 currentB = 0 #create counter to keep track of longest sequence of matching words matchStreak = 0 #create a list that contains all of the matchstreaks found matchStreakList = [] #create binary switch to control the use of while loop continueWhileLoop = 1
  • 你知道吗?还有比自回归方式更快更好的序列生成!
    前言:今天要说的内容是关于非自回归方法的序列生成。在作业1中,我们做了语音识别。它可以看作是一种条件序列生成。输入是一段语音,输出的一段文本序列要求对应到这段输入的语音。除了语音识别外,条件序列生成还可以拓展到更多的任务。比如看图说话,给定一副图片,要求生成的文本序列能够描述图片中的内容。类似的,机器翻译也是,给定一个源语言的文本序列,要求生成的文本序列是还原源语言语义且语言是另一种指定语言。一般自回归模型用的是 RNN,序列的 token 是一个个输入给模型。在解码时,每次生成出的 tokens 都会用来作为限制下一个 token 生成的条件。这样的方法有一个缺点在,当我们要解码生成的句子很长时,要花的时间就和解码的长度成正比。但我们有了 transformer 之后,我们编码时就不需要像 RNN 一样,需要吃前一个时间点的 token 后,才能编码下一个时间点的东西。所以它的速度是可以并行加速的。但在解码时,还是会遇到和 RNN 一样的问题。既然 transformer 都能够并行运算了,为何不让它在解码的时候也一口气把整句话直接生成呢?这样的话,时间就能减少很多。但有一个问题是,我们要如何确定一口气生成的句子到底有多长?我们可以先让解码器预测出一个长度,再利用这个长度去得到位置嵌入。但这样去做又会遇到一个很大的问题。在理解这个问题之前,可以先看一下在图像处理中的例子
  • 如何从句子中的标记的word2vec获取句子的向量(How to get vector for a sentence from the word2vec of tokens in sentence)
    问题 我已经使用word2vec从大型文档中生成了标记列表的向量。 给定一个句子,可以从句子中标记的向量中获取句子的向量。 回答1 有不同的方法来获取句子向量: Doc2Vec :您可以使用Doc2Vec训练数据集,然后使用句子向量。 Word2Vec向量的平均值:您可以只取一个句子中所有词向量的平均值。 该平均向量将代表您的句子向量。 带有TF-IDF的Word2Vec向量的平均值:这是我推荐的最佳方法之一。 只需采用单词向量并将其与TF-IDF分数相乘即可。 仅取平均值,它将代表您的句子向量。 回答2 有几种获取句子向量的方法。 每种方法都有优点和缺点。 选择一个取决于要对向量执行的任务。 首先,您可以简单地对word2vec中的向量进行平均。 根据Le和Mikolov的说法,这种方法在情感分析任务上的表现很差,因为它“失去了与标准单词袋模型相同的单词顺序”,并且“无法识别许多复杂的语言现象,例如讽刺”。 另一方面,根据Kenter等人的说法。 2016年,“证明对文本中的所有单词进行简单的单词嵌入平均已被证明是跨多个任务的强大基线或功能”,例如短文本相似性任务。 一种变体是用其TF-IDF对单词向量加权,以减少最常见单词的影响。 Socher等人开发的一种更复杂的方法。 就是使用矩阵向量运算,按照句子的解析树所给定的顺序组合词向量。 该方法适用于句子情感分析,因为它依赖于分析
  • 论文阅读:Text-based Question Answering from Information Retrieval and Deep Neural Network Perspectives
    从信息检索和深度神经网络视角的基于文本的问答:调研 文章目录 从信息检索和深度神经网络视角的基于文本的问答:调研0. 摘要1. 介绍2. 基于文本的问答的主要框架3. 来自信息检索的问答相似性4. 深度学习视角下的问答相似性4.1 表示模型4.2 交互模型4.3 混合模型 5. QA 的数据集6. 评估7. 文献中的结果8. 讨论9. 结论10. 图摘 0. 摘要 基于文本的问题回答(QA)是一项具有挑战性的任务,旨在为用户的问题找到简短而具体的答案。这一领域的研究已使用信息检索技术进行广泛研究 ,并在近年来考虑的深度神经网络方法中已得到越来越多的关注 。深度学习方法是本文的重点,它提供了一种强大的技术来学习问题和文本之间的多层表示和交互。在本文中,我们为QA中的各种模型做一个全面的概述 ,包括传统的信息检索的视角,以及最近的深度神经网络的角度。我们还为这项任务介绍了著名的数据集,并从文献中引用了可用的结果,以便在不同的技术之间进行比较。 关键词:基于文本的问答、信息检索、深度学习 1. 介绍 问答(QA)是计算机科学中一个快速发展的研究问题,其目的是寻找简短而具体的答案。QA系统主要有两种方法:基于文本的QA 和 基于知识的QA。基于知识的QAs 依靠知识库(KBs)来找到用户问题的答案。Freebase 是其中一个受欢迎的KBs (Bollacker et al., 2008)
  • 使用 levenshtein 距离的两个完整文本相似度 [关闭](two whole texts similarity using levenshtein distance [closed])
    问题 关闭。 这个问题是题外话。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其成为 Stack Overflow 的主题。 8 年前关闭。 改进这个问题 我有两个要比较的文本文件。 我所做的是: 我把它们都分成了句子。 我已经测量了一个文件中的每个句子与第二个文件中的每个句子之间的 levenshtein 距离。 我想计算这两个文本文件之间的平均相似度,但是我很难提供任何有意义的值 - 显然算术平均值(所有距离的总和 [归一化] 除以比较次数)是一个坏主意。 如何解释这样的结果? 编辑:距离值已标准化。 回答1 编辑距离具有最大值,即最大值。 两个输入字符串的长度。 它不会比这更糟。 因此,两个字符串 a 和 b 的归一化相似性指数(0=坏,1=匹配)可以计算为 1- distance(a,b)/max(a.length, b.length)。 从文件 A 中取出一个句子。您说要将其与文件 B 的每个句子进行比较。我猜您正在寻找 B 中距离最小(即最高相似度指数)的句子。 只需计算所有这些“最小相似度指数”的平均值。 这应该可以让您粗略估计两个文本的相似性。 但是是什么让您认为两个相似的文本可能会改变句子? 我个人的意见是,你还应该引入停用词列表、同义词等等。 尽管如此:还请检查三元组匹配,这可能是您正在寻找的另一种好方法。
  • 使 div 宽度等于其中最长的单词/句子长度(Making div width equal to the longest word/sentence length inside it)
    问题 我想让div 宽度等于内容最长的单词/句子长度。 这是示例: <div id="1">I_want_to_make_div_width_equal_to_this_word</div> 它适用于这个 css 代码: div {display: inline-block;} 它也适用于这个例子: <div id="2"> I_want_to_make_div_width_equal_to_this_word <br/> and_anther_word_in_next_line </div> id="2" 的 Div 具有最长单词的宽度。 但我的问题在于这个例子。 当内容窗口太小而无法在一行中包含两个单词时,div 的宽度为 100% 窗口大小: <div id="3"> I_want_to_make_div_width_equal_to_this_word and_anther_word_in_next_line </div> id=3 的 div 是否可能表现得像 id=2 但没有<br />符号? 我刚刚描述的例子:http://jsfiddle.net/2vffqrwy/(使窗口的宽度将第三个 div 中的单词分成两行)。 编辑:完美的解决方案是,当窗口足够大时,当 div id=3 将两个单词显示在一行中,而当窗口太小以在一行中包含两个单词时,其行为类似于 div id
  • 聊天机器人chatbot搭建及思考(TensorFlow)(附代码)
    端到端的对话系统 环境 Python 3.7 TensorFlow 1.14 模型结构 使用seq2seq + attention 模型 NLP应用 词向量层 单词->实数向量 降低输入维度(one-hot输入维度与词汇表大小同) 增加语义信息(稠密向量),在自然语言学习的词向量会将含义相似的词赋予值相近的词向量值 # 为源语言和目标语言分别定义词向量。 self.src_embedding = tf.get_variable( "src_emb", [SRC_VOCAB_SIZE, HIDDEN_SIZE]) self.trg_embedding = tf.get_variable( "trg_emb", [TRG_VOCAB_SIZE, HIDDEN_SIZE]) # 将输入和输出单词编号转为词向量。 src_emb = tf.nn.embedding_lookup(self.src_embedding, src_input) trg_emb = tf.nn.embedding_lookup(self.trg_embedding, trg_input) softmax层 将循环神经网络输出转化为一个单词表中每个单词的输出概率 # 线性映射,将循环网络输出映射成一个维度与词汇表大小相同的向量 # softmax->logoits为加和为1的概率 logits = (tf
  • 我如何知道纯文本文件是用哪种语言编写的? [关闭](How do I tell what language is a plain-text file written in? [closed])
    问题 从目前的情况来看,这个问题不适合我们的问答形式。 我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。 如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 假设我们有一个文本文件,内容为:“我是一个英俊的男人……” 另一个带有:“我是一个勇敢的人” 第三个带有德语文本:“ Guten Morgen。你好吗?” 我们如何编写一个告诉我们的函数:第一个文件中的文本很有可能是英语,第二个文件中有法语等? 欢迎链接到书籍/开箱即用的解决方案。 我用Java编写,但是如果需要,我可以学习Python。 我的评论 我需要添加一条小评论。 文本可能包含不同语言的短语,这些短语可能是整体的一部分,也可能是由于错误导致的。 在经典文学中,我们有很多例子,因为贵族成员会说多种语言。 因此,该概率可以更好地描述情况,因为文本的大多数部分都使用一种语言,而其他部分则可能使用另一种语言编写。 Google API-Internet连接。 我宁愿不使用远程功能/服务,因为我需要自己做或使用可下载的库。 我想对该主题进行研究。 回答1 有一个名为JLangDetect的软件包,它似乎完全可以满足您的要求: langof("un texte en français") = fr : OK langof("a text in