Closed jwzimmer-zz closed 3 years ago
These are the examples given in the Sister Tropes page: [{'IdiotBall', 'PyrrhicVillainy', 'ConflictBall', 'VillainBall'}, {'BigNo', 'ChewingTheScenery', 'LargeHam'}, {'ImpracticallyFancyOutfit', 'ErmineCapeEffect'}, {'RoyalsWhoActuallyDoSomething', 'LadyOfWar'}, {'ItTastesLikeFeet', 'LethalChef'}, {'OneJudgeToRuleThemAll', 'GoldenSnitch'}, {'HideousHangoverCure', 'GargleBlaster'}, {'LoadsAndLoadsOfCharacters', 'CastOfSnowflakes'}, {'GenocideBackfire', 'NiceJobBreakingItHerod'}, {'BulletproofHumanShield', 'HumanShield'}, {'EvilCounterpart', 'EvilKnockoff', 'EvilTwin', 'CriminalDoppelganger', 'IdenticalStranger', 'AlternateUniverse'}, {'DescendingCeiling', 'DeathTrap', 'TheWallsAreClosingIn'}, {'ParodySue', 'TheAce', 'TakeThat'}, {'ShamelessFanserviceGirl', 'ReluctantFanserviceGirl', 'InnocentFanserviceGirl'}, {'NonPoweredCostumedHero', 'Batman', 'BadassNormal'}, {'FlawExploitation', 'BatmanGambit', 'XanatosGambit', 'MortonsFork'}, {'UnnecessarilyLargeVessel', 'StarshipLuxurious'}, {'EscapePod', 'DropPod', 'BoardingParty', 'DynamicEntry', 'BoardingPod', 'ItsRainingMen'}, {'PassedInTheirSleep', 'SlainInTheirSleep', 'ExactlyWhatItSaysOnTheTin', 'PeacefulInDeath', 'SplitAtBirth', 'yk_activity.php?interval=.25'}, {'GotVolunteered', 'WhyAreYouLookingAtMeLikeThat'}, {'SoreLoser', 'UnsportsmanlikeGloating'}, {'GreenHillZone', 'TheLostWoods', 'PlatformGame', 'PalmtreePanic'}, {'DecadentCourt', 'KingOnHisDeathbed', 'SuccessionCrisis'}, {'PlatonicLifePartners', 'HeterosexualLifePartners'}, {'HalloweenTown', 'BleakLevel', 'BigBoosHaunt'}, {'PicturePerfectPresentation', 'Dissolve', 'AgeCut'}, {'CoupleThemeNaming', 'ThemeTwinNaming', 'FamilyThemeNaming', 'RhymingNames', 'RhymeThemeNaming'}, {'MiniDungeon', 'DiscOneFinalBoss', 'BonusDungeon', 'BonusBoss', 'LegacyBossBattle', 'AllTheWorldsAreAStage', 'MiniBoss', 'NostalgiaLevel', 'FinalExamBoss', 'DiscOneFinalDungeon'}, {'TheMovie', 'DeathByAdaptation', 'DiesDifferentlyInAdaptation'}]
@nguyenhphilip it's our first network!!!
It's all the tropes listed as being sister tropes. I think. If I did it right. (sistertropes.gml from https://github.com/jwzimmer/tv-tropes/commit/e45eb63754215c61adcc0db6b04851c04924aaee)
Edgelist from super tropes: https://tvtropes.org/pmwiki/pmwiki.php/Main/SuperTrope (I added a "SuperTrope" node with an edge to each super trope example; I included super tropes NOT in the trope master list; I did not include sub tropes that were not in the trope master list)
[('SuperTropes', 'ActionHero'), ('ActionHero', 'ActionGirl'), ('ActionHero', 'HollywoodActionHero'), ('ActionHero', 'NerdActionHero'), ('ActionHero', 'ActionPet'), ('SuperTropes', 'AnomalousArt'), ('AnomalousArt', 'CreepyChangingPainting'), ('AnomalousArt', 'LivingStatue'), ('AnomalousArt', 'PhantomZonePicture'), ('AnomalousArt', 'PortalPicture'), ('AnomalousArt', 'SpookyPainting'), ('SuperTropes', 'AppropriateAnimalAttire'), ('SuperTropes', 'AssPull'), ('AssPull', 'DiabolusExMachina'), ('AssPull', 'DeusExMachina'), ('SuperTropes', 'BiggerIsBetter'), ('SuperTropes', 'BodySnatcher'), ('BodySnatcher', 'FreakyFridayFlip'), ('BodySnatcher', 'RaisedAsAHost'), ('BodySnatcher', 'PuppeteerParasite'), ('BodySnatcher', 'FreakyFridaySabotage'), ('BodySnatcher', 'GrandTheftMe'), ('BodySnatcher', 'BodySurf'), ('BodySnatcher', 'PeoplePuppets'), ('BodySnatcher', 'DemonicPossession'), ('BodySnatcher', 'CloneByConversion'), ('BodySnatcher', 'FamilialBodySnatcher'), ('SuperTropes', 'Cap'), ('Cap', 'ArbitraryAugmentationLimit'), ('Cap', 'ArbitraryHeadcountLimit'), ('Cap', 'CharacterNameLimits'), ('Cap', 'AbsurdlyHighLevelCap'), ('Cap', 'AbsurdlyLowLevelCap'), ('Cap', 'OneBulletAtATime'), ('SuperTropes', 'Characters'), ('SuperTropes', 'CharacterFocus'), ('CharacterFocus', 'ADayInTheLimelight'), ('SuperTropes', 'ChekhovsGun'), ('SuperTropes', 'TheChosenOne'), ('TheChosenOne', 'ThePoorlyChosenOne'), ('TheChosenOne', 'OnlyTheChosenMayRide'), ('TheChosenOne', 'TheChosenWannabe'), ('TheChosenOne', 'TheChosenZero'), ('TheChosenOne', 'TheUnchosenOne'), ('TheChosenOne', 'MultipleChoiceChosen'), ('TheChosenOne', 'TheChooserOfTheOne'), ('TheChosenOne', 'LegacyOfTheChosen'), ('TheChosenOne', 'OnlyTheChosenMayWield'), ('TheChosenOne', 'TheChosenPeople'), ('TheChosenOne', 'ItSucksToBeTheChosenOne'), ('TheChosenOne', 'BirthmarkOfDestiny'), ('TheChosenOne', 'TheChosenMany'), ('SuperTropes', 'CloserToEarth'), ('CloserToEarth', 'WhiteMaleLead'), ('CloserToEarth', 'MagicalNegro'), ('CloserToEarth', 'MagicalAsian'), ('SuperTropes', 'Conflict'), ('SuperTropes', 'DeathFromAbove'), ('DeathFromAbove', 'ColonyDrop'), ('DeathFromAbove', 'OrbitalBombardment'), ('DeathFromAbove', 'KillSat'), ('SuperTropes', 'EatingTheEnemy'), ('EatingTheEnemy', 'CannibalismSuperpower'), ('EatingTheEnemy', 'YouAreWhoYouEat'), ('EatingTheEnemy', 'FedToTheBeast'), ('SuperTropes', 'EldritchAbomination'), ('EldritchAbomination', 'AnimalisticAbomination'), ('EldritchAbomination', 'AdaptationalAbomination'), ('EldritchAbomination', 'UndeadAbomination'), ('EldritchAbomination', 'EldritchStarship'), ('EldritchAbomination', 'HumanoidAbomination'), ('EldritchAbomination', 'MechanicalAbomination'), ('EldritchAbomination', 'EldritchLocation'), ('EldritchAbomination', 'BotanicalAbomination'), ('EldritchAbomination', 'AdorableAbomination'), ('SuperTropes', 'TheFace'), ('TheFace', 'TeamMom'), ('TheFace', 'TeamDad'), ('TheFace', 'TheChick'), ('TheFace', 'TheHeart'), ('SuperTropes', 'AFriendInNeed'), ('AFriendInNeed', 'GreaterNeedThanMine'), ('AFriendInNeed', 'IGotYouCovered'), ('AFriendInNeed', 'ChangedMyMindKid'), ('AFriendInNeed', 'FinancialTestOfFriendship'), ('AFriendInNeed', 'GoodSamaritan'), ('SuperTropes', 'IdealHero'), ('IdealHero', 'CaptainPatriotic'), ('IdealHero', 'KnightInShiningArmor'), ('IdealHero', 'AllLovingHero'), ('IdealHero', 'TheCape'), ('SuperTropes', 'Jerkass'), ('Jerkass', 'JerkWithAHeartOfJerk'), ('SuperTropes', 'JourneyToTheSky'), ('JourneyToTheSky', 'CallOfTheWildBlueYonder'), ('JourneyToTheSky', 'ScalingTheSummit'), ('JourneyToTheSky', 'TowerOfBabel'), ('SuperTropes', 'LikeFatherLikeSon'), ('LikeFatherLikeSon', 'InTheBlood'), ('LikeFatherLikeSon', 'DaddysLittleVillain'), ('LikeFatherLikeSon', 'SharedFamilyQuirks'), ('LikeFatherLikeSon', 'PursuingParentalPerils'), ('LikeFatherLikeSon', 'HeroicLineage'), ('LikeFatherLikeSon', 'GenerationXerox'), ('LikeFatherLikeSon', 'LineageComesFromTheFather'), ('LikeFatherLikeSon', 'NotSoDifferent'), ('LikeFatherLikeSon', 'LamarckWasRight'), ('LikeFatherLikeSon', 'TurnOutLikeHisFather'), ('LikeFatherLikeSon', 'FollowInMyFootsteps'), ('LikeFatherLikeSon', 'SecretLegacy'), ('LikeFatherLikeSon', 'LoserSonOfLoserDad'), ('LikeFatherLikeSon', 'OverlordJr'), ('SuperTropes', 'LivingADoubleLife'), ('SuperTropes', 'MacGuffin'), ('MacGuffin', 'ArtifactOfDoom'), ('MacGuffin', 'MacGuffinLocation'), ('MacGuffin', 'LivingMacGuffin'), ('MacGuffin', 'PlotCoupon'), ('SuperTropes', 'MakingLoveInAllTheWrongPlaces'), ('MakingLoveInAllTheWrongPlaces', 'ProfessionalsDoItOnDesks'), ('MakingLoveInAllTheWrongPlaces', 'ZeroGSpot'), ('MakingLoveInAllTheWrongPlaces', 'MileHighClub'), ('MakingLoveInAllTheWrongPlaces', 'TwoPersonPoolParty'), ('MakingLoveInAllTheWrongPlaces', 'ElevatorGoingDown'), ('MakingLoveInAllTheWrongPlaces', 'AutoErotica'), ('SuperTropes', 'NatureIsNotAToy'), ('NatureIsNotAToy', 'ThePowerOfTheSun'), ('SuperTropes', 'NoHarmRequirement'), ('NoHarmRequirement', 'BringItBackAlive'), ('NoHarmRequirement', 'CantKillYouStillNeedYou'), ('NoHarmRequirement', 'IWantThemAlive'), ('NoHarmRequirement', 'SheatheYourSword'), ('SuperTropes', 'PinkMeansFeminine'), ('PinkMeansFeminine', 'PrincessesPreferPink'), ('PinkMeansFeminine', 'PinkGirlBlueBoy'), ('SuperTropes', 'Plot'), ('SuperTropes', 'PrettyBoy'), ('SuperTropes', 'RemovingTheRival'), ('RemovingTheRival', 'MurderTheHypotenuse'), ('RemovingTheRival', 'CripplingTheCompetition'), ('SuperTropes', 'RuleOfIndex'), ('SuperTropes', 'SecretIdentity'), ('SuperTropes', 'ShadesOfConflict'), ('ShadesOfConflict', 'BlackAndWhiteInsanity'), ('ShadesOfConflict', 'BlackAndWhiteMorality'), ('ShadesOfConflict', 'GreyAndGrayMorality'), ('SuperTropes', 'ShowDontTell'), ('ShowDontTell', 'InformedAttribute'), ('ShowDontTell', 'ThatMakesMeFeelAngry'), ('SuperTropes', 'SignificantWardrobeShift'), ('SignificantWardrobeShift', 'GoodCostumeSwitch'), ('SignificantWardrobeShift', 'ExpositoryHairstyleChange'), ('SignificantWardrobeShift', 'ImportantHaircut'), ('SignificantWardrobeShift', 'EvilCostumeSwitch'), ('SuperTropes', 'ThreeApproachSystem'), ('ThreeApproachSystem', 'BalanceSpeedStrengthTrio'), ('ThreeApproachSystem', 'DamagerHealerTank'), ('ThreeApproachSystem', 'CombatDiplomacyStealth'), ('ThreeApproachSystem', 'PhysicalMysticalTechnological'), ('ThreeApproachSystem', 'FighterMageThief'), ('SuperTropes', 'TropicalIslandAdventure'), ('TropicalIslandAdventure', 'WelcomeToTheCaribbeanMon'), ('TropicalIslandAdventure', 'AlohaHawaii'), ('TropicalIslandAdventure', 'HulaAndLuaus'), ('TropicalIslandAdventure', 'EastIndies'), ('SuperTropes', 'ATrueHero'), ('ATrueHero', 'TheRealHeroes'), ('SuperTropes', 'UpsettingTheBalance'), ('UpsettingTheBalance', 'TheProblemWithFightingDeath'), ('UpsettingTheBalance', 'ButterflyOfDoom'), ('UpsettingTheBalance', 'BalanceBetweenGoodAndEvil')]
It's kind of almost readable!
lol mine is not exactly readable but I was messing around with different link prediction algorithms and 'community detection' might be one we're interested in. basically it's exactly like it sounds - it's an algorithm that detects clusters of nodes by taking out nodes with high 'betweenness centrality' (i think), nodes that would link from one "community" to another, or in our case from one trope to another. I don't know the exact details yet but i'm betting there's some parameter that you can set to have the algorithm try and detect say n communities.
I wrote a helper Class that makes it easy to run some basic network stats, and I also added a function to create a network based on n randomly selected tropes.
Here's some of them:
and some prediction stuff!:
Awesome! What file is this in? Presumably I can extend the functionality based on what you've already done?
Update on this specific issue: so, the relationship between the nodes in https://tvtropes.org/pmwiki/pmwiki.php/Main/SubTrope is not as consistent as the other articles (super trope, sister trope, trope trope)... in those, the formatting would be like e.g. first trope in a bullet point is the super trope, everything else in that bullet is a sub trope. or whatever). So, given the inconsistent formatting, I just skipped the SubTrope page unless we think it's worth putting extra effort into?
So, since we have some basic graphs and edgelists based on these pages, I'm gonna call this done. : )
Based on https://github.com/jwzimmer/tv-tropes/tree/main/their_structure.
ACTUAL NETWORK TIME MAYBE????