NLTK WordNetLemmatizer:未按预期进行词形还原

2023-12-07

我正在尝试使用 NLTK 的 WordNetLemmatizer 对句子中的所有单词进行词形还原。我有很多句子,但我只是使用第一句话来确保我正确执行此操作。这是我所拥有的:

train_sentences[0]

"Explanation Why edits made username Hardcore Metallica Fan reverted? They vandalisms, closure GAs I voted New York Dolls FAC. And please remove template talk page since I'm retired now.89.205.38.27"

所以现在我尝试按如下方式对每个单词进行词形还原:

lemmatizer = WordNetLemmatizer()
new_sent = [lemmatizer.lemmatize(word) for word in train_sentences[0].split()]
print(new_sent)

我回来了:

['Explanation', 'Why', 'edits', 'made', 'username', 'Hardcore', 'Metallica', 'Fan', 'reverted?', 'They', 'vandalisms,', 'closure', 'GAs', 'I', 'voted', 'New', 'York', 'Dolls', 'FAC.', 'And', 'please', 'remove', 'template', 'talk', 'page', 'since', "I'm", 'retired', 'now.89.205.38.27']

有几个问题:

1)为什么“编辑”没有转化为“编辑”?诚然,如果我这样做lemmatizer.lemmatize("edits")我回来了edits但很惊讶。

2)为什么“破坏行为”没有转化为“破坏行为”?这非常令人惊讶,因为如果我这样做lemmatizer.lemmatize("vandalisms"),我回来了vandalism...

任何澄清/指导都会很棒!


TL;DR

首先标记句子,然后使用词性标记作为词形还原的附加参数输入。

from nltk import pos_tag
from nltk.stem import WordNetLemmatizer

wnl = WordNetLemmatizer()

def penn2morphy(penntag):
    """ Converts Penn Treebank tags to WordNet. """
    morphy_tag = {'NN':'n', 'JJ':'a',
                  'VB':'v', 'RB':'r'}
    try:
        return morphy_tag[penntag[:2]]
    except:
        return 'n' 

def lemmatize_sent(text): 
    # Text input is string, returns lowercased strings.
    return [wnl.lemmatize(word.lower(), pos=penn2morphy(tag)) 
            for word, tag in pos_tag(word_tokenize(text))]

lemmatize_sent('He is walking to school')

有关如何以及为何需要 POS 标签的详细演练,请参阅https://www.kaggle.com/alvations/basic-nlp-with-nltk


或者,您可以使用pywsdtokenizer + lemmatizer,NLTK 的包装器WordNetLemmatizer:

Install:

pip install -U nltk
python -m nltk.downloader popular
pip install -U pywsd

Code:

>>> from pywsd.utils import lemmatize_sentence
Warming up PyWSD (takes ~10 secs)... took 9.307677984237671 secs.

>>> text = "Mary leaves the room"
>>> lemmatize_sentence(text)
['mary', 'leave', 'the', 'room']

>>> text = 'Dew drops fall from the leaves'
>>> lemmatize_sentence(text)
['dew', 'drop', 'fall', 'from', 'the', 'leaf']

(版主请注意:我不能将此问题标记为重复nltk:如何将周围的单词融入上下文中进行词形还原?因为答案在那里没有被接受,但它是重复的)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NLTK WordNetLemmatizer:未按预期进行词形还原 的相关文章

随机推荐

  • 在 WP8 WebBrowser 控件中显示 m.bing.com

    我在 Windows Phone 8 上的 WebBrowser 控件中加载 bing com 时遇到问题 这样做似乎会启动 WP8 搜索应用程序 与按手机上的搜索按钮相同 问题是 一旦您单击该搜索应用程序中的结果 它不会带您返回原始应用程
  • WPF ComboBox SelectedItem 未更新

    我在与某公司合作时遇到问题WPF 组合框 我的情况是我有一个显示一些值的组合框 我正在添加ContentControls 到组合框 Items财产 我已经绑定了Content这些 ContentControl 到某个数据源 以便我可以动态更
  • 基于 WooCommerce 中特定产品地理位置的自定义重定向

    如果德国客户尝试访问产品页面 我需要将他们重定向到自定义页面 并且我已经开始将一些内容放在一起 但我不知道如何完成 这是我得到的 add action do not know which hook to use geo origin red
  • 停止在 MAMP 中缓存 PHP 5.5.3

    使用 PHP 5 5 3 在新 Macbook 上安装了 MAMP 重新加载和刷新什么也不做 依然没有 谷歌几分钟试图找出问题所在 然后回来刷新 有用 有没有搞错 我进入 php ini 并禁用所有新的 OPcache 并将默认缓存时间设置
  • 如何将访问过的页面 URL 添加到会话数组中?

    每次用户访问页面时 页面 url 都会存储到数组会话中 我只想在数组中有 10 个元素 这样 10 个元素将保存 10 个最近访问的页面 url 这是我的代码 我测试了
  • 转置(3,0,1,2)是什么意思?

    这是什么意思 data transpose 3 0 1 2 另外 如果data shape 10 10 10 为什么我得到ValueError axes don t match array 我先从Python3的角度来讨论一下 我在Pyth
  • 将本地 mosquitto 桥接到云代理

    我正在尝试将本地 mosquitto 在树莓派上 桥接到某个云代理 以便我可以发送数据并使用该数据控制某些设备 我尝试使用 Cloudmqtt 和 dioty 但没有成功 在 cloudmqtt 的情况下 我被告知 mosquitto co
  • Android - 如何将文件附加到短信?

    我需要通过短信发送联系方式 所以 我使用 vcf 文件 不过 我需要将它附加到 android SDK 中的短信 android中有这样的功能 我在智能手机上尝试过 我几天来一直在寻找做到这一点的方法 到目前为止我发现的一切都是这个构建 v
  • 将 B 隐藏在 A
    B

    我有一个 h2 foo br bar h2 我想隐藏 bar 但我找不到合适的选择器 有可能吗 我认为你应该将 B 包裹起来 span B span 并隐藏该跨度
  • dataSnapshot 具有对象,但 getValue() 将返回 null

    所以我现在正在为这个问题苦苦挣扎大约三个小时 我有这个用户类别 public class User private String user id private String userName private long phoneNumbe
  • 如何在Python中查找任何包的“导入名称”?

    我想知道是否有任何可靠且一致的方法来获取Python包 导入名称 命名空间 例如 Package Django 干草堆 导入名称 草垛 or Package 蟒蛇 导入名称 Python 到目前为止我知道 PyPi 不存储我用 PyPiXm
  • C#.net 中的弹出窗口

    如何在单击按钮时弹出子窗体 我希望子 winform 位于屏幕中央 并且整个背景屏幕应该模糊 并且在表单的右上角应该可以看到一个小的关闭按钮 我在网上搜索过但一无所获 使用Winforms 制作一个新的窗口窗体 默认情况下它有一个关闭按钮
  • 键“P​​RIMARY”的重复条目。忽略字符串的空格

    mysql gt CREATE TABLE primary2 boom text id int PRIMARY KEY boom 5 Query OK 0 rows affected 0 04 sec mysql gt INSERT INT
  • SQL 存储过程参数已损坏?

    我有一个存储过程 目前只是假设将您的字符串输入验证为有效日期 我尝试在程序之外运行它 它工作完美 但是一旦我将其放入程序中 参数就会更改为零 我的程序如下 CREATE PROCEDURE spDateRange DateMin varch
  • C - 按升序插入链表

    我正在尝试创建一个程序 将数字按升序插入链接列表中 这是我的插入功能 它适用于插入一些数字 但不适用于其他数字 我认为这与最后一部分有关 但我无法弄清楚 node insert node head int value check if he
  • vb.net查询显示数据表的特定行[基础]

    如何在表中显示查询返回的特定行 查询代码为 SELECT name STD Fees paid FROM register WHERE paid Fees lt 0 我收到错误 An unhandled exception of type
  • 将 boost::bind 函数存储在 std::map 中

    我正在创建一堆函数 它们都有效地执行相同的操作 long Foo check long retValue unsigned toCheck const std set
  • peerjs/webrtciceConnectionState 失败

    我已经尝试解决这个问题有一段时间了 我正在尝试使用peerjs 建立一个简单的连接 我可以成功连接到具有 id 的对等点USER ID 但是 他们无法连接到我 当他们尝试连接时 我收到以下日志 iceConnectionState更改为fa
  • 安装报纸时导入错误

    我对 python 很陌生 正在尝试导入报纸以进行文章提取 每当我尝试导入模块时 我都会得到ImportError cannot import name images 有人遇到过这个问题并找到解决方案吗 我能够通过创建一个来解决这个问题im
  • NLTK WordNetLemmatizer:未按预期进行词形还原

    我正在尝试使用 NLTK 的 WordNetLemmatizer 对句子中的所有单词进行词形还原 我有很多句子 但我只是使用第一句话来确保我正确执行此操作 这是我所拥有的 train sentences 0 Explanation Why