Tôi có bù đắp đồng bộ WordNet (ví dụ: id="n#05576222"
). Cho bù đắp này, làm thế nào tôi có thể nhận được các synset bằng cách sử dụng Python?Làm thế nào để có được bộ đồng bộ WordNet cho một ID bù đắp?
Trả lời
Đối với NTLK 3.2.3 hoặc mới hơn, vui lòng xem câu trả lời của người tặng.
Đối với phiên bản cũ của NLTK:
Không có built-in phương pháp trong NLTK nhưng bạn có thể sử dụng này:
from nltk.corpus import wordnet
syns = list(wordnet.all_synsets())
offsets_list = [(s.offset(), s) for s in syns]
offsets_dict = dict(offsets_list)
offsets_dict[14204095]
>>> Synset('heatstroke.n.01')
Sau đó bạn có thể dưa vào từ điển và tải nó bất cứ khi nào bạn cần nó.
Đối với phiên bản NLTK trước 3.0, thay thế dòng
offsets_list = [(s.offset(), s) for s in syns]
với
offsets_list = [(s.offset, s) for s in syns]
từ trước NLTK 3,0 offset
được một thuộc tính thay vì một phương pháp.
Khác với sử dụng NLTK, một tùy chọn khác là sử dụng tệp .tab từ Open Multilingual WordNet
http://compling.hss.ntu.edu.sg/omw/ cho Princeton WordNet. Thông thường tôi sử dụng công thức dưới đây để truy cập WordNet như một cuốn từ điển với bù đắp là chìa khóa và ;
chuỗi giới hạn như một giá trị:
# Gets first instance of matching key given a value and a dictionary.
def getKey(dic, value):
return [k for k,v.split(";") in dic.items() if v in value]
# Read Open Multi WN's .tab file
def readWNfile(wnfile, option="ss"):
reader = codecs.open(wnfile, "r", "utf8").readlines()
wn = {}
for l in reader:
if l[0] == "#": continue
if option=="ss":
k = l.split("\t")[0] #ss as key
v = l.split("\t")[2][:-1] #word
else:
v = l.split("\t")[0] #ss as value
k = l.split("\t")[2][:-1] #word as key
try:
temp = wn[k]
wn[k] = temp + ";" + v
except KeyError:
wn[k] = v
return wn
princetonWN = readWNfile('wn-data-eng.tab')
offset = "n#05576222"
offset = offset.split('#')[1]+'-'+ offset.split('#')[0]
print princetonWN.split(";")
print getKey('heatstroke')
Tính đến NLTK 3.2.3, có một phương pháp nào để làm điều này:
wordnet.synset_from_pos_and_offset(pos, offset)
Trong các phiên bản trước đó bạn có thể sử dụng:
wordnet._synset_from_pos_and_offset(pos, offset)
này trả về một synset dựa trên nó POS và offest ID. Tôi nghĩ rằng phương pháp này chỉ có sẵn trong NLTK 3.0 nhưng tôi không chắc chắn.
Ví dụ:
from nltk.corpus import wordnet as wn
wn._synset_from_pos_and_offset('n',4543158)
>> Synset('wagon.n.01')
Bạn có thể sử dụng of2ss()
, Ví dụ:
from nltk.corpus import wordnet as wn
syn = wn.of2ss('01580050a')
sẽ trở lại Synset('necessary.a.01')
- 1. làm thế nào để có được bù đắp đúng của một yếu tố? - jQuery
- 2. Làm thế nào để tránh không xác định bù đắp
- 3. iOS - Làm thế nào để nhận được bù đắp thô cho múi giờ?
- 4. Twitter thay đổi khởi động bù đắp bù đắp
- 5. Làm thế nào để đọc màu sắc từ một bù đắp của một XAML LinearGradientBrush?
- 6. Bù đắp hình dạng trong một ShapeDrawable
- 7. Số trang và bù đắp
- 8. Làm thế nào để có được các biến cho một từ bằng cách sử dụng Wordnet
- 9. Matplotlib imshow có bù đắp cho khớp với trục không?
- 10. Một truy vấn bù đắp là gì?
- 11. Làm thế nào để bù đắp một đường cong bezier khối?
- 12. Làm thế nào để có được tất cả các từ trái của một từ/đồng bộ trong python nltk và wordnet?
- 13. Làm thế nào để cắt một mảng bằng phím, không bù đắp?
- 14. Macro bù đắp C hoạt động như thế nào?
- 15. MKPinAnnotationView bù đắp hình ảnh?
- 16. Thêm bù đắp vào IntPtr
- 17. Mẫu để gói một hàm JavaScript không đồng bộ để làm cho nó đồng bộ
- 18. làm thế nào để giới hạn/bù đắp kết quả sqlalchemy orm của mối quan hệ?
- 19. Làm thế nào để có được tính theo giờ UTC bù đắp trong javascript (analog của TimeZoneInfo.GetUtcOffset trong C#)
- 20. Có cách nào chung để đồng bộ hóa một phương pháp không đồng bộ không?
- 21. Làm cách nào để áp dụng 'bù đắp' cho một phần tử bên trong khung nội tuyến?
- 22. Danh mục có nhiều trang (bù đắp lớn) (stackoverflow hoạt động như thế nào?)
- 23. Làm thế nào để giữ đồng bộ VMWare VM đồng bộ?
- 24. Làm thế nào tôi có thể bù đắp hình ảnh UIButton bên trong UIBarButtonItem trên navBar?
- 25. chuyển đổi thời gian utc và bù đắp cho DateTime
- 26. Cú pháp cho biến cục bộ tuyệt đối đối với biến số khác với một số bù đắp
- 27. Làm thế nào để lấy bù đắp múi giờ từ GMT + 0 trong php?
- 28. Làm thế nào để không đồng bộ tuôn ra một tập tin ánh xạ bộ nhớ?
- 29. Tìm kiếm giải pháp thay thế cho glTexSubImage2d với hỗ trợ bù đắp dữ liệu
- 30. Ruby - mỗi bù đắp bắt đầu
Thú vị, điều này ném một lỗi quan trọng với NLTK 3,0 – duhaime
'offset' là bây giờ là một phương pháp. Hãy thử thay vào đó: 'offsets_dict = {s.offset(): s cho s trong wn.all_synsets()}' – Omer
* "Không có phương pháp tích hợp trong NLTK" * - hiện đã có! Xem câu trả lời của người đóng góp; cái này đã lỗi thời. –