sentence= raw_input("Enter a sentence: ")
sentence = sentence.lower()
sentence = sentence.split()
uniquewords = []
for word in sentence:
if word not in uniquewords:
uniquewords.append(word)
position = [word for word in range(len(uniquewords))]
我有独特的词,独特的词和句子的位置。我现在需要用每个单词的位置重新创建原始句子,例如:I LIKE PYTHON PYTHON PYTHON LIKE HI
这将重新创建为1 2 3 3 3 2 4
。唯一字代表单词" PYTHON
"可以重复多次,而不影响" HI
"并且使它在位置7可以有人请帮助我用每个单词的位置重新创建原始句子。
答案 0 :(得分:1)
首先你需要一个好的字符串标记器,以正确的方式将标记拆分为标记。 nltk附带了一个好的字符串标记。
macbookproloreto:~ admin$ python
Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import nltk
>>> sentence="I LIKE PYTHON PYTHON PYTHON LIKE HI"
>>> tokens = nltk.word_tokenize(sentence)
>>> tokens
['I', 'LIKE', 'PYTHON', 'PYTHON', 'PYTHON', 'LIKE', 'HI']
>>>
只要你有tokens
,你就有了数组索引的位置,所以你可以进行迭代。
此时我们创建了set
个唯一字词:
>>> unique=set(tokens)
>>> unique
set(['I', 'PYTHON', 'HI', 'LIKE'])
然后我们把它变成一个列表
>>> list(unique)
['I', 'PYTHON', 'HI', 'LIKE']
我们知道原始标记数组中的匹配位置,即原始句子,所以:
>>> indices = [tokens.index(t) for t in tokens]
>>> indices
[0, 1, 2, 2, 2, 1, 6]
这是你原来的句子:
>>> original = " ".join([tokens[t] for t in indices])
>>> original
'I LIKE PYTHON PYTHON PYTHON LIKE HI'
答案 1 :(得分:1)
首先我不知道是不是因为你的程序未完成或错误但是位置结果是[0, 1, 2, 3]
而不是[0, 1, 2, 2, 2, 1, 3]
。
这是您的程序的完整版本,可以从位置开始工作和构造句子。 我在digitSentence中重命名了位置:
sentence= raw_input("Enter a sentence: ")
sentence = sentence.lower()
sentence = sentence.split()
uniquewords = []
for word in sentence:
if word not in uniquewords:
uniquewords.append(word)
wordToNum = {uniquewords[word]: word for word in range(len(uniquewords))}
digitSentence = map(wordToNum.get, sentence)
print digitSentence
print ' '.join(map(uniquewords.__getitem__, digitSentence))
答案 2 :(得分:0)
您只需遍历位置数组并使用唯一字的索引。类似的东西:
reconstructed = []
for i in position:
reconstructed.append(uniquewords[i])
print " ".join(reconstructed)
应该做的伎俩...
答案 3 :(得分:0)
位置输出?
if (LOCATIONOne_Sel_Val=='')
{
if($('#errorLocOne').length)
{
return false; //If the error Message is displayed already
}
else //Display the error message
{
$(errorMsgLocOne).insertAfter('#Loc_Id1');
return false;
}
}
else if(LOCATIONTwo_Sel_Val=='')
{
if($('#errorLocTwo').length)
{
return false; //If the error Message is displayed already
}
else //Display the error message
{
$(errorMsgLocTwo).insertAfter('#Loc_Id2');
return false;
}
}
答案 4 :(得分:0)
这是一个简单的解决方案:
sentence = raw_input("Enter a sentence: ")
sentence = sentence.lower().split()
uniquewords = []
for word in sentence:
if word not in uniquewords:
uniquewords.append(word)
positions = [uniquewords.index(word) for word in sentence]
recreated = " ".join([uniquewords[i] for i in positions])
print positions
print recreated
请注意,在此实施中,排名从0
开始,而不是1
。