def print_pairings(self): """ Print out the pairings for first date, along with the combined scores. """ random.seed(0) everyone = Match(Profiles(100)) pairs_list = everyone.pairs() for index, (male, female, score) in enumerate(pairs_list): print("{:2}: {:2} vs {:2} with the score {:.3f}".format( index + 1, male + 1, female + 1, score))
def __init__(self, ui_template): super(MatchViewGroup, self).__init__() """ Import settings """ self.ui_template = ui_template self.settings = import_settings() self.current_match = Match() self.setTitle('Match View') """ Layout """ self.grid_layout = QGridLayout() self.setLayout(self.grid_layout) self.grid_layout.setColumnStretch(1, 1) self.grid_layout.setColumnStretch(2, 1) self.grid_layout.setColumnStretch(3, 1) self.grid_layout.setRowStretch(1, 1) """ Rounds list """ self.rounds_list = QListView() self.rounds_list_model = QStandardItemModel() self.rounds_list.setModel(self.rounds_list_model) self.rounds_list.setEditTriggers(QAbstractItemView.NoEditTriggers) self.grid_layout.addWidget(self.rounds_list, 0, 0, 2, 1) """ End game state info """ self.end_game_state_info_group = QGroupBox() self.end_game_state_info_layout = QVBoxLayout() self.end_game_state_info_group.setLayout( self.end_game_state_info_layout) self.end_game_state_info_group.setTitle('Results') self.grid_layout.addWidget(self.end_game_state_info_group, 2, 0, 2, 1) # Results self.match_seed_label = QLabel() self.end_game_state_info_layout.addWidget(self.match_seed_label) self.match_winner_label = QLabel() self.end_game_state_info_layout.addWidget(self.match_winner_label) self.player_A_results_label = QLabel() self.end_game_state_info_layout.addWidget(self.player_A_results_label) self.player_B_results_label = QLabel() self.end_game_state_info_layout.addWidget(self.player_B_results_label) self.referee_messages_label = QLabel() self.referee_messages_label.setText('Referee Messages') self.end_game_state_info_layout.addWidget(self.referee_messages_label) self.referee_messages_text = QTextBrowser() self.end_game_state_info_layout.addWidget(self.referee_messages_text) # Map view self.map_view = QGraphicsView() self.map_scene = QGraphicsScene() self.map_view.setScene(self.map_scene) self.grid_layout.addWidget(self.map_view, 1, 1, 2, 2) # Add groups and field labels to the match view self.groups = {} self.populate_fields(self.ui_template, self.grid_layout)
def load_match(self, directory): self.current_match = Match(directory) self.list_rounds() self.update_end_game_state() self.rounds_list.setCurrentIndex(self.rounds_list_model.index(0, 0))
corpus = [] with open('data/sentences.txt', 'r', encoding='utf-8') as f: for line in f: corpus.append(line.strip()) find_words_obj = FindWords(corpus=corpus, top_k=500, chunk_size=10000, min_n=3, max_n=5, min_freq=10) find_words_obj.find_new_words() find_words_obj.to_file(my_list=find_words_obj.new_words, file_path='data/new_words.txt') match_obj = Match(build_words_path='data/new_words.txt', input_words_path='data/new_words.txt') print(match_obj.match_all()) # [('婚贝请柬', '婚贝请间'), ('黑马矿友', '黑码矿友'), ('填锐绿盾', '天锐绿盾'), ... ] # 开放拼音相似,懒得再生成,直接在new_words.txt中写入'杜拉拉'、'非马宽友'测试 new_word_out = open('data/new_words.txt', 'a+', encoding='utf-8') new_word_out.write('杜拉拉' + '\n') new_word_out.write('非马宽友') new_word_out.close() match_obj = Match(build_words_path='data/new_words.txt', input_words_path='data/new_words.txt', level=PinyinLevel.CONFUSED) print(match_obj.match('黑马矿友')) print(match_obj.match_all()) # [('土拉拉', '杜拉拉'), ('黑马矿友', '非马宽友'), ('填锐绿盾', '天锐绿盾'), ... ]
""" Unit tests for match module. """ import random import unittest from data.profiles import Profiles from match.match import Match random.seed(0) INITIAL_ATTENDANTS = list(Profiles(100)) # Result after matching, RESULTS should be a list of tuples (male_index,female_index, score) RESULTS = Match(INITIAL_ATTENDANTS) PAIRS = RESULTS.pairs() class TestMatch(unittest.TestCase): """ Tests for match. Try to cover as many scenarios as possible, grouping them into different methods as appropriate. """ def test_male_female(self): """ Test if pairing is between males and females only """ for couple in PAIRS: self.assertNotEqual(INITIAL_ATTENDANTS[couple[0]]["gender"], INITIAL_ATTENDANTS[couple[1]]["gender"]) def test_50_pairs(self): """ Test if there are exactly 50 pairs
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author: Jeffrey Gao # Time: 2020/5/11 22:09 # Description: 发现混淆词主文件 from match.match import Match from find_words.find_words import FindWords corpus = [] with open('data/sentences.txt', 'r', encoding='utf-8') as f: for line in f: corpus.append(line.strip()) find_words_obj = FindWords(corpus=corpus, top_k=500, chunk_size=10000, min_n=3, max_n=5, min_freq=10) find_words_obj.find_new_words() find_words_obj.to_file(my_list=find_words_obj.new_words, file_path='data/new_words.txt') match_obj = Match(build_words_path='data/new_words.txt', input_words_path='data/new_words.txt') print(match_obj.match_all()) # [('婚贝请柬', '婚贝请间'), ('黑马矿友', '黑码矿友'), ('填锐绿盾', '天锐绿盾'), ... ]