我有一个问题,如何计算文本中短语之间的单词?例如,我有下一个文本:
Elon Musk是一位技术企业家和投资者。他是SpaceX的创始人,首席执行官和首席设计师。马斯克(Elon Musk)表示,SpaceX,特斯拉(Tesla)和SolarCity的目标围绕着他改变世界和人类的愿景。
我想计算“ Elon Mask”和“ SpaceX”之间有多少个单词。并像数字列表一样返回smth,然后找到平均单词距离。例如[15,6]。
我知道,在单词的情况下,我们可以将文本拆分为单词。但是如何处理短语?
答案 0 :(得分:1)
您可以根据要点,感叹号和问号来分割文本,但是您的程序将如何知道短语和要点之间的区别(表示缩写)?最重要的是,您将如何处理括号?他们会被视为单独的短语吗?
除非您对词组施加一些严重的限制,否则我认为您的问题没有简单的答案。
答案 1 :(得分:0)
正如用户Dominique所提到的,您必须考虑很多小细节。我编写了一个简单的程序,可以找到两个单词的距离。您想找到“ Elon Musk”和“ SpaceX”之间的距离。为什么不仅仅找到“麝香”和“ SpaceX”之间的距离?
注意:此示例将返回单词首次出现之间的距离。在此程序中,我们找到了“ Musk”(第二个单词)与“ SpaceX(第18个单词)”之间的距离。之间的距离为15个单词
Elon Musk是一位技术企业家和投资者。他是SpaceX的创始人,首席执行官和首席设计师。马斯克(Elon Musk)表示,SpaceX,特斯拉(Tesla)和SolarCity的目标围绕着他改变世界和人类的愿景。
示例(Python 3):
# Initial sentence
phrase = 'Elon Musk is a technology entrepreneur and investor. He is the founder, CEO, and lead designer of SpaceX. Elon Musk has stated that the goals of SpaceX, Tesla, and SolarCity revolve around his vision to change the world and humanity.'
# Removes common punctuation characters
phrase = ''.join(character for character in phrase if character not in ('!', '.' , ':' , ',', '"')) # Insert punctuation you want removed
# Creates a list of split words
word_list = phrase.split()
# Words you want to find the distance between (word_1 comes first in the sentence, then word_2)
word_1 = 'Musk'
word_2 = 'SpaceX'
# Calculates the distance between word_1 and word_2
distance = (word_list.index(word_2)) - (word_list.index(word_1))
# Prints distance between word_1 and word_2
print('Distance between "' + word_1 + '" and "' + word_2 + '" is ' + str(distance - 1) + ' words.')
输出:
“麝香”和“ SpaceX”之间的距离为15个字。
答案 2 :(得分:0)
您还没有指定一些逻辑,但是可以通过以下方法实现:
def find_distance(sentence, word1, word2):
distances = []
while sentence != "":
_, _, sentence = sentence.partition(word1)
text, _, _ = sentence.partition(word2)
if text != "":
distances.append(len(text.split()))
return distances
如果您用句子来称呼它,您将得到想要的结果[15, 6]
print(find_distance(phrase, "Elon Musk", "SpaceX"))
请注意,必须定义Elon Musk is a technology Elon Musk entrepreneur ...
之类的情况的行为。您想发生哪种情况?第一还是第二?