【问题标题】:How can I use natural language processing to split a sentence in half?如何使用自然语言处理将句子分成两半?
【发布时间】:2020-08-11 15:08:51
【问题描述】:

我从来没有做过自然语言处理,所以请原谅任何错误的术语。我愿意使用任何语言/库,例如 NLTK 或 spaCy,但没有付费 API。

我正在尝试制作一款游戏,用户必须自己完成一句名言。

示例输入:

没有书的房间就像没有灵魂的身体。

期望的输出:

没有书的房间...

我想要更复杂的句子,例如:

我知道人们会忘记你说过的话,人们会忘记你做过的事,但人们永远不会忘记你给他们带来的感受。

期望的输出:

我知道人们会忘记你说的话...

另一个例子:

别走在我面前……我可能不会跟着

别走在我后面……我可能不会领导

走在我身边……做我的朋友

期望的输出:

不要走在我面前……我可能不会跟着……

我觉得提取名词/动词短语/块几乎是我想要的,但不完全是。也许像(伪代码):

phrases = extractAllPhrases(sentence)
middlePhrase = phrases.length / 2
desiredOutuput = sentence.substring(0, sentence.offset(middlePhrase) + middlePhrase.length))

这是否太复杂而无法使用 NLP 实现?英语中是否有太多的句法变量无法覆盖以获得一致的结果?我应该手动拆分引号吗?我愿意接受建议而不是工作答案,例如“阅读等等”,我只是不知道从哪里开始。但在我花大量时间学习 NLP 只是为了发现这是不可能的之前,我想知道这是否可行。

【问题讨论】:

    标签: nlp nltk spacy


    【解决方案1】:

    这里是更短的形式。你可以试试这个代码

    sentence = "A room without books is like a body without a soul."
    truncate_text = (sentence[:40] + '....') if len(sentence) > 40 else sentence
    print(truncate_text)
    
    

    【讨论】:

      【解决方案2】:

      嗯,这可以在不使用 NLP 的情况下完成。这是python代码..

      sentence = "A room without books is like a body without a soul."
      sentence_list = sentence.split(" ")
      length = len(sentence_list)
      output = sentence_list[0:round(length/2)]
      print(" ".join(output)+"...")
      

      【讨论】:

      • 我想使用 NLP,因为我不想随意将句子分成两半。我想把它分成一个逻辑部分,即在一个名词短语之后。但是看到你的代码工作让我觉得我可能不再需要这样做了。所以谢谢你。
      猜你喜欢
      • 2017-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      相关资源
      最近更新 更多