Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从基本名词中分离复合名词(下)_Python - Fatal编程技术网

Python 从基本名词中分离复合名词(下)

Python 从基本名词中分离复合名词(下),python,Python,我之前问过一个问题,我得到了我想要的答案。然而,我现在有更多的问题 我有一份清单如下: name = ['road', 'roadwork', 'pill', 'pillbox', 'pillow', 'ball', 'football', 'basketball', 'work', 'box', 'foot', 'basket'] 下面的代码将带有复合名词的单词与基本单词分开: for candidate in name: for word in name: if w

我之前问过一个问题,我得到了我想要的答案。然而,我现在有更多的问题

我有一份清单如下:

name = ['road', 'roadwork', 'pill', 'pillbox', 'pillow', 'ball',
'football', 'basketball', 'work', 'box', 'foot', 'basket']
下面的代码将带有复合名词的单词与基本单词分开:

for candidate in name:
    for word in name:
        if word != candidate and word in candidate:
            break      
        else:              
            print candidate
然而,我意识到该代码过于严格,因为它还从列表中删除了“枕头”

是否有代码可以生成以下结果:

name = ['road', 'pill', 'pillow', 'ball', 'work', 'box', 'foot', 'basket']

你需要找出减去匹配项后单词的剩余部分是否是另一个单词。我想,在某些情况下,词源可能不匹配。例如,我认为包含另一个单词plus‘is’的单词,where‘is’不作为它的意思使用

编辑:例如:

words = ['book','store','bookstore','booking']
li = []
for word in words:
    for test in words:
        if test in word:
            temp = word[len(test):]
            if temp in words and word not in li:
                li.append(word) 

for x in li:
    words.remove(x)
print words

你需要找出减去匹配项后单词的剩余部分是否是另一个单词。我想,在某些情况下,词源可能不匹配。例如,我认为包含另一个单词plus‘is’的单词,where‘is’不作为它的意思使用

编辑:例如:

words = ['book','store','bookstore','booking']
li = []
for word in words:
    for test in words:
        if test in word:
            temp = word[len(test):]
            if temp in words and word not in li:
                li.append(word) 

for x in li:
    words.remove(x)
print words

对于一般的单词,判断它是否是复合词的最简单方法是将它切成两半,然后看看两半是否都是单词。您必须使用不同的切点重复测试,因此运行时间与单词的长度成正比。对于任何英语单词,它都应该相当快,除了

输出:

['road', 'pill', 'pillow', 'ball', 'work', 'box', 'foot', 'basket']

对于一般的单词,判断它是否是复合词的最简单方法是将它切成两半,然后看看两半是否都是单词。您必须使用不同的切点重复测试,因此运行时间与单词的长度成正比。对于任何英语单词,它都应该相当快,除了

输出:

['road', 'pill', 'pillow', 'ball', 'work', 'box', 'foot', 'basket']

欲望输出为:name=['road'、'pill'、'pillow'、'ball']。我之前问的问题是,为什么“篮球”是一个复合词,“枕头”不是?不要说,“因为‘篮球’是由名词‘basket’和‘ball’组成的”。在你的
姓名
列表中没有
basket
条目,因此就你的程序而言,它不是一个单词。为了更好地说明我的观点,我有一个英语单词数据库,由基本单词(如“foot”和“ball”)和复合单词(由两个基本单词组成的单词,如“football”)。我想从我的数据库中筛选出复合词。是否有代码可以搜索由两个基本词组成的词并将其从我的列表中删除?您的数据库是否有单词“pill”和“ow”?然后您的程序将分类为“pillow”作为一个复合词,即使它的意思与组成它的词无关。可以吗?我的数据库没有单词“ow”,因为它不是一个有效的英语单词。我想,如果代码没有删除“枕头”,因为单词“ow”不在我的列表中,也可以。愿望输出是:name=['road'、'pill'、'pill'、'ball']我之前问过的问题是,为什么“basketball”是一个复合词,而“pillow”不是?不要说,“因为‘basketball’是由名词‘basket’和‘ball’组成的。”在你的
姓名
列表中没有
basket
条目,因此就你的程序而言,它不是一个单词。好吧,为了更好地说明我的观点,我有一个英语单词数据库,由基本单词(如“foot”和“ball”)和复合单词(由两个基本单词组成的单词,如“football”)组成。我想从我的数据库中筛选出复合词。是否有代码可以搜索由两个基本词组成的词并将其从我的列表中删除?您的数据库是否有单词“pill”和“ow”?然后您的程序将分类为“pillow”作为一个复合词,即使它的意思与组成它的词无关。可以吗?我的数据库没有“ow”这个词,因为它不是一个有效的英语单词。我想如果代码没有删除“枕头”,因为“ow”这个词是可以的在我的列表中不存在。好吧,为了更好地说明我的观点,我有一个英语单词数据库,包括基本单词(如“foot”和“ball”)和复合单词(由两个基本单词组成的单词,如“football”。我想从我的数据库中筛选出复合词。是否有代码可以搜索由两个基本词组成的词并将其从我的列表中删除?好的,为了更好地说明我的观点,我有一个由基本词(如“foot”和“ball”)和复合词组成的英语词数据库(由两个基本单词组成的单词,如“football”。我想从我的数据库中筛选出复合词。是否有代码搜索由两个基本单词组成的单词并将其从我的列表中删除?