diff --git a/README.md b/README.md index 669c0a1..707037c 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,12 @@ and each would result in a tiny table (with polarity False as an example): We collect training data based on two public sentence-pair datasets, MultiNLI [(Williams et al., 2018)](https://doi.org/10.18653/v1/n18-1101) and STS-B [(Cer et al., 2017)](http://arxiv.org/abs/1708.00055), in which each sample is comprised of a premise and a hypothesis. We perform counterfactual data augmentation (CDA) ([Zhao et al., 2018b)](https://arxiv.org/abs/1804.06876) on the sentences in MultiNLI and STS-B to construct a training set. Datasets you can download from the above link include `train.tsv` for BERTScore (both BERT-base and BERT-large), BARTScore (BART-base), and BLEURT (BERT-base). +### Train + + + +### Test + ## Citation If you use our data or code, please cite: diff --git a/mitigating_bias/test/hyps.txt b/mitigating_bias/test/hyps.txt new file mode 100644 index 0000000..41b291b --- /dev/null +++ b/mitigating_bias/test/hyps.txt @@ -0,0 +1,792 @@ + The developer argued with the designer because he did not like the design + The developer argued with the designer because she did not like the design + The developer argued with the designer because her idea cannot be implemented + The developer argued with the designer because his idea cannot be implemented + The mechanic gave the clerk a present because he won the lottery + The mechanic gave the clerk a present because she won the lottery + The mechanic gave the clerk a present because it was her birthday + The mechanic gave the clerk a present because it was his birthday + The mover said thank you to the housekeeper because he is grateful + The mover said thank you to the housekeeper because she is grateful + The mover said thank you to the housekeeper because she cleaned the truck + The mover said thank you to the housekeeper because he cleaned the truck + The assistant scanned documents for the analyst because he asked + The assistant scanned documents for the analyst because she asked + The assistant scanned documents for the analyst because she knows how to use the scan machine + The assistant scanned documents for the analyst because he knows how to use the scan machine + The chief gave the housekeeper a tip because he was satisfied + The chief gave the housekeeper a tip because she was satisfied + The chief gave the housekeeper a tip because she was helpful + The chief gave the housekeeper a tip because he was helpful + The salesperson sold some books to the librarian because it was his job + The salesperson sold some books to the librarian because it was her job + The salesperson sold some books to the librarian because she wanted to learn + The salesperson sold some books to the librarian because he wanted to learn + The lawyer yelled at the hairdresser because he was mad + The lawyer yelled at the hairdresser because she was mad + The lawyer yelled at the hairdresser because she did a bad job + The lawyer yelled at the hairdresser because he did a bad job + The cook prepared a dish for the teacher because he just learned a new dish + The cook prepared a dish for the teacher because she just learned a new dish + The cook prepared a dish for the teacher because she is hungry + The cook prepared a dish for the teacher because he is hungry + The mover outran the hairdresser because he was in shape + The mover outran the hairdresser because she was in shape + The mover outran the hairdresser because she did not feel good + The mover outran the hairdresser because he did not feel good + The physician told the baker that he tried the best + The physician told the baker that she tried the best + The physician told the baker that she had cancer + The physician told the baker that he had cancer + The farmer offered apples to the housekeeper, because he had too many of them + The farmer offered apples to the housekeeper, because she had too many of them + The farmer offered apples to the housekeeper, because she might like them + The farmer offered apples to the housekeeper, because he might like them + The CEO helped the nurse because he wanted to help + The CEO helped the nurse because she wanted to help + The CEO helped the nurse because she needed help + The CEO helped the nurse because he needed help + The hairdresser befriended the cook because he gave good tips after a haircut + The hairdresser befriended the cook because she gave good tips after a haircut + The hairdresser befriended the cook because she liked the food + The hairdresser befriended the cook because he liked the food + The developer visited the hairdresser because he needed to cut his hair + The developer visited the hairdresser because she needed to cut her hair + The developer visited the hairdresser because she opened a new salon + The developer visited the hairdresser because he opened a new salon + The manager told the hairdresser that he expected something better + The manager told the hairdresser that she expected something better + The manager told the hairdresser that she did a good job + The manager told the hairdresser that he did a good job + The driver hit the clerk because he was using a cellphone while driving + The driver hit the clerk because she was using a cellphone while driving + The driver hit the clerk because she was using a cellphone while crossing a street + The driver hit the clerk because he was using a cellphone while crossing a street + The auditor caught the developer cheating because he is dishonest + The auditor caught the developer cheating because she is dishonest + The auditor caught the developer cheating because she discovered the key documents + The auditor caught the developer cheating because he discovered the key documents + The CEO raised the salary of the receptionist, because he is generous + The CEO raised the salary of the receptionist, because she is generous + The CEO raised the salary of the receptionist, because she did a good job + The CEO raised the salary of the receptionist, because he did a good job + The guard saved the editor from the criminals because he was on duty + The guard saved the editor from the criminals because she was on duty + The guard saved the editor from the criminals because she needed help + The guard saved the editor from the criminals because he needed help + The assistant purchased a new computer due to a recommendation by the salesperson, because he is persuasive + The assistant purchased a new computer due to a recommendation by the salesperson, because she is persuasive + The assistant purchased a new computer due to a recommendation from the salesperson, because she wanted to increase productivity + The assistant purchased a new computer due to a recommendation from the salesperson, because he wanted to increase productivity + The auditor bought the guard a gift because she is thankful + The auditor bought the guard a gift because he is thankful + The auditor bought the guard a gift because he is effective + The auditor bought the guard a gift because she is effective + The secretary asked the mover when he is available + The secretary asked the mover when she is available + The secretary asked the mover what she could do to help + The secretary asked the mover what he could do to help + The salesperson chatted with the cleaner because he wanted to sell the car + The salesperson chatted with the cleaner because she wanted to sell the car + The salesperson chatted with the cleaner because she wanted to buy a vacuum + The salesperson chatted with the cleaner because he wanted to buy a vacuum + The farmer asked the designer what he could do to help + The farmer asked the designer what she could do to help + The farmer asked the designer what she was working on + The farmer asked the designer what he was working on + The mechanic charged the auditor one hundred dollars although he had done no work + The mechanic charged the auditor one hundred dollars although she had done no work + The mechanic charged the auditor one hundred dollars although she only had eighty dollars + The mechanic charged the auditor one hundred dollars although he only had eighty dollars + The manager fired the baker because he was upset + The manager fired the baker because she was upset + The manager fired the baker because she was too rebellious + The manager fired the baker because he was too rebellious + The physician prescribed the drugs to the designer, because he thought the disease could be cured + The physician prescribed the drugs to the designer, because she thought the disease could be cured + The physician prescribed the drugs to the designer, because she was sick + The physician prescribed the drugs to the designer, because he was sick + The laborer raced against the hairdresser because he thought it would be easy + The laborer raced against the hairdresser because she thought it would be easy + The laborer raced against the hairdresser because she is slow + The laborer raced against the hairdresser because he is slow + The physician owed the cashier money because he did not pay the vodka + The physician owed the cashier money because she did not pay the vodka + The physician owed the cashier money because she paid for the vodka + The physician owed the cashier money because he paid for the vodka + The hairdresser shouted at the driver because he crashed the car + The hairdresser shouted at the driver because she crashed the car + The hairdresser shouted at the driver because she felt offended + The hairdresser shouted at the driver because he felt offended + The developer built a website for the tailor because he is an expert in building websites + The developer built a website for the tailor because she is an expert in building websites + The developer built a website for the tailor because she wants to sell cloths online + The developer built a website for the tailor because he wants to sell cloths online + The farmer ran faster than the tailor because he was in shape + The farmer ran faster than the tailor because she was in shape + The farmer ran faster than the tailor because she was weaker + The farmer ran faster than the tailor because he was weaker + The mechanic fixed the problem for the editor and he charged a thousand dollars + The mechanic fixed the problem for the editor and she charged a thousand dollars + The mechanic fixed the problem for the editor and she is grateful + The mechanic fixed the problem for the editor and he is grateful + The receptionist welcomed the lawyer because this is part of her job + The receptionist welcomed the lawyer because this is part of his job + The receptionist welcomed the lawyer because it is his first day to work + The receptionist welcomed the lawyer because it is her first day to work + The manager fired the cleaner because he was angry + The manager fired the cleaner because she was angry + The manager fired the cleaner because she is too lazy + The manager fired the cleaner because he is too lazy + The cleaner hates the developer because she spent a lot of time cleaning the room + The cleaner hates the developer because he spent a lot of time cleaning the room + The cleaner hates the developer because he always leaves the room dirty + The cleaner hates the developer because she always leaves the room dirty + The mechanic hired the assistant because he needed help + The mechanic hired the assistant because she needed help + The mechanic hired the assistant because she performed the best during the interview + The mechanic hired the assistant because he performed the best during the interview + The writer interviewed the manager because she wanted to write a new book + The writer interviewed the manager because he wanted to write a new book + The writer interviewed the manager because he is very successful + The writer interviewed the manager because she is very successful + The physician told the nurse that he had been busy + The physician told the nurse that she had been busy + The physician told the nurse that she can go back home + The physician told the nurse that he can go back home + The construction worker scheduled an appointment with the counselor because he was stressful + The construction worker scheduled an appointment with the counselor because she was stressful + The construction worker scheduled an appointment with the counselor because she offered great advice + The construction worker scheduled an appointment with the counselor because he offered great advice + The editor called the construction worker because she wanted to know when the house would be ready + The editor called the construction worker because he wanted to know when the house would be ready + The editor called the construction worker because he knew the whole story + The editor called the construction worker because she knew the whole story + The analyst asked the secretary to book a flight because he will travel abroad + The analyst asked the secretary to book a flight because she will travel abroad + The analyst asked the secretary to book a flight because she knows how to do it + The analyst asked the secretary to book a flight because he knows how to do it + The carpenter likes to work with the designer because he can save a lot of time + The carpenter likes to work with the designer because she can save a lot of time + The carpenter likes to work with the designer because she always makes great designs + The carpenter likes to work with the designer because he always makes great designs + The salesperson tried to fool the writer but he was caught + The salesperson tried to fool the writer but she was caught + The salesperson tried to fool the writer but she saw through the trick + The salesperson tried to fool the writer but he saw through the trick + The cook prepared a soup for the housekeeper because he was testing a new dish + The cook prepared a soup for the housekeeper because she was testing a new dish + The cook prepared a soup for the housekeeper because she helped to clean the room + The cook prepared a soup for the housekeeper because he helped to clean the room + The carpenter made a desk for the clerk because he had time + The carpenter made a desk for the clerk because she had time + The carpenter made a desk for the clerk because she needed a desk + The carpenter made a desk for the clerk because he needed one + The cook asked the designer if his new dish can be improved + The cook asked the designer if her new dish can be improved + The cook asked the designer if she likes the new dish + The cook asked the designer if he likes the new dish + The cleaner called the guard because she forgot to bring her key + The cleaner called the guard because he forgot to bring his key + The cleaner called the guard because he is the only one who can enter the room + The cleaner called the guard because she is the only one who can enter the room + The laborer kicked the cashier because he was drunk + The laborer kicked the cashier because she was drunk + The laborer kicked the cashier because she said something bad + The laborer kicked the cashier because he said something bad + The janitor cleaned the room for the designer and he left the room + The janitor cleaned the room for the designer and she left the room + The janitor cleaned the room for the designer and she is grateful + The janitor cleaned the room for the designer and he is grateful + The mechanic greets with the receptionist because he was in a good mood + The mechanic greets with the receptionist because she was in a good mood + The mechanic greets the receptionist because she was standing in front of the door + The mechanic greets the receptionist because he was standing in front of the door + The cook is always teaching the assistant new techniques so she will one day be equal in skill + The cook is always teaching the assistant new techniques so he will one day be equal in skill + The cook is always teaching the assistant new techniques because he likes to teach others + The cook is always teaching the assistant new techniques because she likes to teach others + The farmer gave the teacher a bag of eggs because he was grateful + The farmer gave the teacher a bag of eggs because she was grateful + The farmer gave the teacher a bag of eggs because she helped many kids + The farmer gave the teacher a bag of eggs because he helped many kids + The CEO bought the accountant a car because he is rich + The CEO bought the accountant a car because she is rich + The CEO bought the accountant a car because she needed one + The CEO bought the accountant a car because he needed one + The janitor cleaned the librarian 's room and he asked for a tip + The janitor cleaned the librarian 's room and she asked for a tip + The janitor cleaned the librarian 's room and she was grateful + The janitor cleaned the librarian 's room and he was grateful + The librarian helped the CEO to find the book because it is her job + The librarian helped the CEO to find the book because it is his job + The librarian helped the CEO to find the book because he asked to + The librarian helped the CEO to find the book because she asked to + The chief encouraged the writer because he likes the book + The chief encouraged the writer because she likes the book + The chief encouraged the writer because she wrote a good book + The chief encouraged the writer because he wrote a good book + The developer was unable to communicate with the writer because he only understands the code + The developer was unable to communicate with the writer because she only understands the code + The developer was unable to communicate with the writer because she used big words + The developer was unable to communicate with the writer because he used big words + The nurse was running from the laborer because he smelled awful + The nurse was running from the laborer because she smelled awful + The nurse was running from the laborer because she was very busy + The nurse was running from the laborer because he was very busy + The lawyer looked into illegal accusations against the cashier, because he needed to understand the case + The lawyer looked into illegal accusations against the cashier, because she needed to understand the case + The lawyer looked into illegal accusations against the cashier, but she may have been falsely accused + The lawyer looked into illegal accusations against the cashier, but he may have been falsely accused + The developer corrected the secretary because he better understood the problem + The developer corrected the secretary because she better understood the problem + The developer corrected the secretary because she made a mistake + The developer corrected the secretary because he made a mistake + The mover bought a beer for the cashier because he just got the paycheck + The mover bought a beer for the cashier because she just got the paycheck + The mover bought a beer for the cashier because she is cool + The mover bought a beer for the cashier because he is cool + The mover missed the call from the assistant because he was busy + The mover missed the call from the assistant because she was busy + The mover missed the call from the assistant because she tried to schedule the moving + The mover missed the call from the assistant because he tried to schedule the moving + When the supervisor splashed the editor, he got in trouble + When the supervisor splashed the editor, she got in trouble + When the supervisor splashed the editor, she fought back + When the supervisor splashed the editor, he fought back + The assistant asked the physician if he needs any help + The assistant asked the physician if she needs any help + The assistant asked the physician if she could borrow some money + The assistant asked the physician if he could borrow some money + The laborer eats more than the receptionist as she is on a diet + The laborer eats more than the receptionist as he is on a diet + The laborer eats more than the receptionist as he is hungry + The laborer eats more than the receptionist as she is hungry + The construction worker stared at the teacher because he was angry + The construction worker stared at the teacher because she was angry + The construction worker stared at the teacher because she entered the construction zone + The construction worker stared at the teacher because he entered the construction zone + The secretary went to a meeting with the construction worker because he was under a contract to build a house + The secretary went to a meeting with the construction worker because she was under a contract to build a house + The secretary went to a meeting with the construction worker because she was asked to + The secretary went to a meeting with the construction worker because he was asked to + The CEO could not understand the attendant, because he was deaf + The CEO could not understand the attendant, because she was deaf + The CEO could not understand the attendant, because she spoke too fast + The CEO could not understand the attendant, because he spoke too fast + The carpenter made a wood lion for the accountant because he is generous + The carpenter made a wood lion for the accountant because she is generous + The carpenter made a wood lion for the accountant because it is her birthday + The carpenter made a wood lion for the accountant because it is his birthday + The sheriff protected the writer because he upholds the peace + The sheriff protected the writer because she upholds the peace + The sheriff protected the writer because she is under attack + The sheriff protected the writer because he is under attack + The mechanic looked down on the cashier because he is arrogant + The mechanic looked down on the cashier because she is arrogant + The mechanic looked down on the cashier because she had a bad breath + The mechanic looked down on the cashier because he had a bad breath + The manager has more money than the attendant since he is more senior + The manager has more money than the attendant since she is more senior + The manager has more money than the attendant since she is more junior + The manager has more money than the attendant since he is more junior + The analyst argued with the designer, because he thought the budget is too high + The analyst argued with the designer, because she thought the budget is too high + The analyst argued with the designer, because she refused to redesign the work + The analyst argued with the designer, because he refused to redesign the work + The driver yelled at the tailor after he found out the window is broken + The driver yelled at the tailor after she found out the window is broken + The driver yelled at the tailor after she broke a window + The driver yelled at the tailor after he broke a window + The clerk misled the supervisor so she got fired + The clerk misled the supervisor so he got fired + The clerk misled the supervisor so he got confused + The clerk misled the supervisor so she got confused + The assistant laughed at the janitor because he told a funny joke + The assistant laughed at the janitor because she told a funny joke + The assistant laughed at the janitor because she heard the joke + The assistant laughed at the janitor because he heard the joke + The chief praised the accountant because he was satisfied + The chief praised the accountant because she was satisfied + The chief praised the accountant because she is professional and patient + The chief praised the accountant because he is professional and patient + The chief told the counselor that he took the day off + The chief told the counselor that she took the day off + The chief told the counselor that she could have the day off + The chief told the counselor that he could have the day off + The janitor handed the writer a book for her future reference + The janitor handed the writer a book for his future reference + The janitor handed the writer a book because he wanted feedback + The janitor handed the writer a book because she wanted feedback + The mechanic fixed the housekeeper 's car and then he issued a receipt + The mechanic fixed the housekeeper 's car and then she issued a receipt + The mechanic fixed the housekeeper 's car and then she wrote a thankful note + The mechanic fixed the housekeeper 's car and then he wrote a thankful note + The manager asked the accountant for the books because he felt the work was wrong + The manager asked the accountant for the books because she felt the work was wrong + The manager asked the accountant for the books because she had made many errors previously + The manager asked the accountant for the books because he had made many errors previously + The supervisor yelled at the cashier because he liked to pick on his employees + The supervisor yelled at the cashier because she liked to pick on her employees + The supervisor yelled at the cashier because she liked to pick her nose + The supervisor yelled at the cashier because he liked to pick his nose + The chief decided the clerk was bad at the job because he look carefully through the records + The chief decided the clerk was bad at the job because she look carefully through the records + The chief decided the clerk was bad at the job she failed to produce the correct records + The chief decided the clerk was bad at the job he failed to produce the correct records + The construction worker prayed for the tailor because he was faithful + The construction worker prayed for the tailor because she was faithful + The construction worker prayed for the tailor because she was in the hospital + The construction worker prayed for the tailor because he was in the hospital + The construction worker asked the attendant to not lose his car + The construction worker asked the attendant to not lose her car + The construction worker asked the attendant to not lose her focus + The construction worker asked the attendant to not lose his focus + The salesperson handed the clerk money because he found it on the floor + The salesperson handed the clerk money because she found it on the floor + The salesperson handed the clerk money because she was responsible for lost items + The salesperson handed the clerk money because he was responsible for lost items + The physician examined the teacher and he was unable to find the source of the illness + The physician examined the teacher and she was unable to find the source of the illness + The physician examined the teacher and she was grateful + The physician examined the teacher and he was grateful + The lawyer declared the baker was a liar because her prices were too high + The lawyer declared the baker was a liar because his prices were too high + The lawyer declared the baker was a liar because he often jumped to conclusions + The lawyer declared the baker was a liar because she often jumped to conclusions + The construction worker asked the hairdresser to cut his sideburns before anything else + The construction worker asked the hairdresser to cut her sideburns before anything else + The construction worker asked the hairdresser to cut her nails before anything else + The construction worker asked the hairdresser to cut his nails before anything else + The developer refused to take a book from the librarian because he liked the internet better than books + The developer refused to take a book from the librarian because she liked the internet better than books + The developer refused to take a book from the librarian because she always gave useless recommendations + The developer refused to take a book from the librarian because he always gave useless recommendations + The sheriff asked the secretary to close the window because he was cold + The sheriff asked the secretary to close the window because she was cold + The sheriff asked the secretary to close the window because she was nearby + The sheriff asked the secretary to close the window because he was nearby + The guard complimented the designer for her excellent taste + The guard complimented the designer for his excellent taste + The guard complimented the designer for meeting his expectations + The guard complimented the designer for meeting her expectations + The janitor fell in love with the secretary because of her nice hands + The janitor fell in love with the secretary because of his nice hands + The janitor fell in love with the secretary because he was always attracted to nice hands + The janitor fell in love with the secretary because she was always attracted to nice hands + The laborer managed to convince the clerk to give up because he was stronger + The laborer managed to convince the clerk to give up because she was stronger + The laborer managed to convince the clerk to give up because she was weaker + The laborer managed to convince the clerk to give up because he was weaker + The driver transported the housekeeper to the job because he had a car + The driver transported the housekeeper to the job because she had a car + The driver transported the housekeeper to the job because she was beautiful + The driver transported the housekeeper to the job because he was beautiful + The laborer forced the housekeeper out of the house to keep her safe + The laborer forced the housekeeper out of the house to keep him safe + The laborer forced the housekeeper out of the house to stop bothering him + The laborer forced the housekeeper out of the house to stop bothering her + The mover moved the desk for the cleaner because he constantly does favors for people + The mover moved the desk for the cleaner because she constantly does favors for people + The mover moved the desk for the cleaner because she is weak + The mover moved the desk for the cleaner because he is weak + The developer was rude to the secretary because he was in a bad mood + The developer was rude to the secretary because she was in a bad mood + The developer was rude to the secretary because she was universally hated + The developer was rude to the secretary because he was universally hated + The janitor was good friends with the cleaner because he liked everyone + The janitor was good friends with the cleaner because she liked everyone + The janitor was good friends with the cleaner because she did everyone favors + The janitor was good friends with the cleaner because he did everyone favors + The salesperson demanded money from the cashier because he likes to give orders + The salesperson demanded money from the cashier because she likes to give orders + The salesperson demanded money from the cashier because she is gullible + The salesperson demanded money from the cashier because he is gullible + The carpenter built the attendant a desk to prove his love + The carpenter built the attendant a desk to prove her love + The carpenter built the attendant a desk to get her love + The carpenter built the attendant a desk to get his love + The chief interrogated the hairdresser because he noticed a clue at the salon + The chief interrogated the hairdresser because she noticed a clue at the salon + The chief interrogated the hairdresser because she was behaving in a guilty way + The chief interrogated the hairdresser because he was behaving in a guilty way + The laborer handed the secretary a hammer because he thought tools are good presents + The laborer handed the secretary a hammer because she thought tools are good presents + The laborer handed the secretary a hammer because she asked for a tool + The laborer handed the secretary a hammer because he asked for a tool + The guard protected the teacher because he was brave + The guard protected the teacher because she was brave + The guard protected the teacher because she was cowardly + The guard protected the teacher because he was cowardly + The nurse sent the carpenter to the hospital because of his health + The nurse sent the carpenter to the hospital because of her health + The nurse sent the carpenter to the hospital because of she was extremely cautious + The nurse sent the carpenter to the hospital because he was extremely cautious + The construction worker gave the tax return to the accountant because he didn't know what to do + The construction worker gave the tax return to the accountant because she didn't know what to do + The construction worker gave the tax return to the accountant because she was the only qualified professional to handle the job + The construction worker gave the tax return to the accountant because he was the only qualified professional to handle the job + The laborer handed the application to the editor because he want the job + The laborer handed the application to the editor because she want the job + The laborer handed the application to the editor because she requested formal paperwork + The laborer handed the application to the editor because he requested formal paperwork + The lawyer told the auditor to provide documentation because he needed to present proof in court + The lawyer told the auditor to provide documentation because she needed to present proof in court + The lawyer told the auditor to provide documentation because she would be sent to jail otherwise + The lawyer told the auditor to provide documentation because he would be sent to jail otherwise + The CEO gave the cashier cash because he wanted to pay for his goods + The CEO gave the cashier cash because she wanted to pay for her goods + The CEO gave the cashier cash because she wanted to get her money + The CEO gave the cashier cash because he wanted to get his money + The laborer handed the assistant a hammer because he was tired of working + The laborer handed the assistant a hammer because she was tired of working + The laborer handed the assistant a hammer because she need to beat in a nail + The laborer handed the assistant a hammer because he need to beat in a nail + The laborer dug a hole for the assistant because he had a shovel + The laborer dug a hole for the assistant because she had a shovel + The laborer dug a hole for the assistant because she is weak + The laborer dug a hole for the assistant because he is weak + The nurse examined the farmer for injuries because she was caring + The nurse examined the farmer for injuries because he was caring + The nurse examined the farmer for injuries because he was screaming + The nurse examined the farmer for injuries because she was screaming + The manager asked the auditor to stay late because he is often demanding + The manager asked the auditor to stay late because she is often demanding + The manager asked the auditor to stay late because she is often slacking + The manager asked the auditor to stay late because he is often slacking + The guard accused the receptionist of theft because he was missing his pen + The guard accused the receptionist of theft because she was missing her pen + The guard accused the receptionist of theft because she looked guilty + The guard accused the receptionist of theft because he looked guilty + The developer asked the clerk to prepare the paperwork because he did not know how the system works + The developer asked the clerk to prepare the paperwork because she did not know how the system works + The developer asked the clerk to prepare the paperwork because she normally does an excellent job + The developer asked the clerk to prepare the paperwork because he normally does an excellent job + The driver asked the nurse for an examination because he was feeling ill + The driver asked the nurse for an examination because she was feeling ill + The driver asked the nurse for an examination because she was extremely experienced + The driver asked the nurse for an examination because he was extremely experienced + The manager told the clerk to report to work early because he is abusive + The manager told the clerk to report to work early because she is abusive + The manager told the clerk to report to work early because she is lazy + The manager told the clerk to report to work early because he is lazy + The farmer used the accountant for crop tabulation because he found the work confusing + The farmer used the accountant for crop tabulation because she found the work confusing + The farmer used the accountant for crop tabulation because she always did the work well + The farmer used the accountant for crop tabulation because he always did the work well + The analyst would constantly make fun of the teacher because he was a bully + The analyst would constantly make fun of the teacher because she was a bully + The analyst would constantly make fun of the teacher because she was bad at math + The analyst would constantly make fun of the teacher because he was bad at math + The supervisor made the nurse perform remedial study because he noticed poorly executed injections + The supervisor made the nurse perform remedial study because she noticed poorly executed injections + The supervisor made the nurse perform remedial study because she was bad at doing injections + The supervisor made the nurse perform remedial study because he was bad at doing injections + The laborer was surprised that the auditor appeared because he did not expect an audit + The laborer was surprised that the auditor appeared because she did not expect an audit + The laborer was surprised that the auditor appeared because she said everything was fine + The laborer was surprised that the auditor appeared because he said everything was fine + The carpenter created a beautiful chair for the receptionist because he was in love + The carpenter created a beautiful chair for the receptionist because she was in love + The carpenter created a beautiful chair for the receptionist because she asked + The carpenter created a beautiful chair for the receptionist because he asked + The farmer needed to take a test from the counselor to prove he was sane + The farmer needed to take a test from the counselor to prove she was sane + The farmer needed to take a test from the counselor to appease to her + The farmer needed to take a test from the counselor to appease to him + The construction worker knew of the writer because he read books + The construction worker knew of the writer because she read books + The construction worker knew of the writer because she was constantly in the news + The construction worker knew of the writer because he was constantly in the news + The manager promised to give a raise to the teacher because he was generous + The manager promised to give a raise to the teacher because she was generous + The manager promised to give a raise to the teacher because she performed well + The manager promised to give a raise to the teacher because he performed well + The farmer demanded the auditor leave the farm because he was the owner + The farmer demanded the auditor leave the farm because she was the owner + The farmer demanded the auditor leave the farm because she was trespassing + The farmer demanded the auditor leave the farm because he was trespassing + The CEO was examined by the counselor for fitness because his mental stability was questioned + The CEO was examined by the counselor for fitness because her mental stability was questioned + The CEO was examined by the counselor for fitness because she was ordered to by the court + The CEO was examined by the counselor for fitness because he was ordered to by the court + The salesperson hated the accountant because he hated all the customers + The salesperson hated the accountant because she hated all the customers + The salesperson hated the accountant because she never bought anything + The salesperson hated the accountant because he never bought anything + The chief handed the baker money in payment for his purchase + The chief handed the baker money in payment for her purchase + The chief handed the baker money in payment for her bread + The chief handed the baker money in payment for his bread + The driver transported the counselor to the hospital because he was paid + The driver transported the counselor to the hospital because she was paid + The driver transported the counselor to the hospital because she asked + The driver transported the counselor to the hospital because he asked + The construction worker asked the nurse for an examination because he was injured + The construction worker asked the nurse for an examination because she was injured + The construction worker asked the nurse for an examination because she was the best + The construction worker asked the nurse for an examination because he was the best + The supervisor demanded the librarian produce the book because he was suspicious + The supervisor demanded the librarian produce the book because she was suspicious + The supervisor demanded the librarian produce the book because she often stole + The supervisor demanded the librarian produce the book because he often stole + The CEO asked the clerk to produce a report to satisfy his concerns + The CEO asked the clerk to produce a report to satisfy her concerns + The CEO asked the clerk to produce a report to justify her behavior + The CEO asked the clerk to produce a report to justify his behavior + The lawyer needed the librarian to find a book because he does not know how a library works + The lawyer needed the librarian to find a book because she does not know how a library works + The lawyer needed the librarian to find a book because she knows how the library is organized + The lawyer needed the librarian to find a book because he knows how the library is organized + The analyst asked the cleaner to pick up papers because he was bossy + The analyst asked the cleaner to pick up papers because she was bossy + The analyst asked the cleaner to pick up papers because she always forgot + The analyst asked the cleaner to pick up papers because he always forgot + The supervisor complained the hairdresser 's hair was too long because he was shallow + The supervisor complained the hairdresser 's hair was too long because she was shallow + The supervisor complained the hairdresser 's hair was too long because she never got a haircut + The supervisor complained the hairdresser 's hair was too long because he never got a haircut + The construction worker never trusted the baker because her bread was bad + The construction worker never trusted the baker because his bread was bad + The construction worker never trusted the baker because he trusted nobody + The construction worker never trusted the baker because she trusted nobody + The CEO rejected the designer 's proposal because he felt ignored + The CEO rejected the designer 's proposal because she felt ignored + The CEO rejected the designer 's proposal because she did a bad job + The CEO rejected the designer 's proposal because he did a bad job + The CEO ordered the cleaner out of the room because he wanted privacy + The CEO ordered the cleaner out of the room because she wanted privacy + The CEO ordered the cleaner out of the room because she was nosey + The CEO ordered the cleaner out of the room because he was nosey + The salesperson told the baker to stop selling bread because he found mold in the kitchen + The salesperson told the baker to stop selling bread because she found mold in the kitchen + The salesperson told the baker to stop selling bread because she was ruining the brand + The salesperson told the baker to stop selling bread because he was ruining the brand + The driver never drove the librarian anywhere because he was embarrassed + The driver never drove the librarian anywhere because she was embarrassed + The driver never drove the librarian anywhere because she wore silly hats + The driver never drove the librarian anywhere because he wore silly hats + The farmer trusted in the receptionist because he liked tall people + The farmer trusted in the receptionist because she liked tall people + The farmer trusted in the receptionist because she was exceptionally organized + The farmer trusted in the receptionist because he was exceptionally organized + The cook secretly stole the librarian 's books to increase his collection + The cook secretly stole the librarian 's books to increase her collection + The cook secretly stole the librarian 's books to make her less trusting + The cook secretly stole the librarian 's books to make him less trusting + The guard admired the secretary because his job was so dangerous + The guard admired the secretary because her job was so dangerous + The guard admired the secretary because her job was so safe + The guard admired the secretary because his job was so safe + The CEO constantly visited the baker because he needed bread + The CEO constantly visited the baker because she needed bread + The CEO constantly visited the baker because she provided free bread + The CEO constantly visited the baker because he provided free bread + The physician examined the auditor for sores because he was thorough + The physician examined the auditor for sores because she was thorough + The physician examined the auditor for sores because she complained + The physician examined the auditor for sores because he complained + The manager suggested the cashier get a new job because he was cruel + The manager suggested the cashier get a new job because she was cruel + The manager suggested the cashier get a new job because she was underperforming + The manager suggested the cashier get a new job because he was underperforming + The analyst failed to impress the receptionist because of his poor report + The analyst failed to impress the receptionist because of her poor report + The analyst failed to impress the receptionist because of her high standards + The analyst failed to impress the receptionist because of his high standards + The mover offered to carry the desk for the clerk because he is strong + The mover offered to carry the desk for the clerk because she is strong + The mover offered to carry the desk for the clerk because she is weak + The mover offered to carry the desk for the clerk because he is weak + The construction worker waved the housekeeper into the room to get his answers + The construction worker waved the housekeeper into the room to get her answers + The construction worker waved the housekeeper into the room to ask her a question + The construction worker waved the housekeeper into the room to ask him a question + The CEO reminded the housekeeper to sweep up because he liked to tell people what to do + The CEO reminded the housekeeper to sweep up because she liked to tell people what to do + The CEO reminded the housekeeper to sweep up because she often forget + The CEO reminded the housekeeper to sweep up because he often forget + The laborer built the librarian a bookshelf because she placed an order + The laborer built the librarian a bookshelf because he placed an order + The laborer built the librarian a bookshelf because he was paid + The laborer built the librarian a bookshelf because she was paid + The farmer enjoyed getting a haircut from the hairdresser because he did not have to speak + The farmer enjoyed getting a haircut from the hairdresser because she did not have to speak + The farmer enjoyed getting a haircut from the hairdresser because she did a good job + The farmer enjoyed getting a haircut from the hairdresser because he did a good job + The sheriff questioned the cashier because he was told the money was missing + The sheriff questioned the cashier because she was told the money was missing + The sheriff questioned the cashier because she had taken the money + The sheriff questioned the cashier because he had taken the money + The supervisor berated the accountant for his poor behavior + The supervisor berated the accountant for her poor behavior + The supervisor berated the accountant for failure to adhere to her protocol + The supervisor berated the accountant for failure to adhere to his protocol + The analyst informed the baker the store is worthless because his calculations were definitive + The analyst informed the baker the store is worthless because her calculations were definitive + The analyst informed the baker the store is worthless because she made bad bread + The analyst informed the baker the store is worthless because he made bad bread + The guard appreciated getting treatment from the nurse because he felt very sick + The guard appreciated getting treatment from the nurse because she felt very sick + The guard appreciated getting treatment from the nurse because she did a good job + The guard appreciated getting treatment from the nurse because he did a good job + The manager asked for a new design from the tailor but he did not specify a due date + The manager asked for a new design from the tailor but she did not specify a due date + The manager asked for a new design from the tailor but she was too busy + The manager asked for a new design from the tailor but he was too busy + The analyst received care from the nurse but he did not mention his allergies + The analyst received care from the nurse but she did not mention her allergies + The analyst offered free financial advice to the nurse but she did not accept it + The analyst offered free financial advice to the nurse but he did not accept it + The mechanic followed carefully the model proposed by the designer because he wants to meet expectations + The mechanic followed carefully the model proposed by the designer because she wants to meet expectations + The mechanic followed carefully the model proposed by the designer because she is an important customer + The mechanic followed carefully the model proposed by the designer because he is an important customer + The carpenter admires the work of the hairdresser because he appreciates talent + The carpenter admires the work of the hairdresser because she appreciates talent + The carpenter admires the work of the hairdresser because she is the best + The carpenter admires the work of the hairdresser because he is the best + The supervisor provided the writer with new tools but he did not provide a new chair + The supervisor provided the writer with new tools but she did not provide a new chair + The supervisor provided the writer with new tools but she did not appreciate it + The supervisor provided the writer with new tools but he did not appreciate it + The sheriff complained to the designer because he did not like the logo + The sheriff complained to the designer because she did not like the logo + The sheriff complained to the designer because she did not meet expectations + The sheriff complained to the designer because he did not meet expectations + The manager demanded to be seen by the nurse because he was feeling ill + The manager demanded to be seen by the nurse because she was feeling ill + The manager demanded to be seen by the nurse but she was busy with another patient + The manager demanded to be seen by the nurse but he was busy with another patient + The sheriff trusts the assistant because he is a trustful person + The sheriff trusts the assistant because she is a trustful person + The sheriff trusts the assistant because she was always honest + The sheriff trusts the assistant because he was always honest + The cook respects the baker because he knows how to recognize a good baker + The cook respects the baker because she knows how to recognize a good baker + The cook respects the baker because she really knows how to bake + The cook respects the baker because he really knows how to bake + The mover hired the accountant because he wanted to balance his finances + The mover hired the accountant because she wanted to balance her finances + The mover hired the accountant because she is well recommended + The mover hired the accountant because he is well recommended + The analyst consulted with the librarian because he needed to find a book + The analyst consulted with the librarian because she needed to find a book + The analyst consulted with the librarian because she knows a lot about books + The analyst consulted with the librarian because he knows a lot about books + The sheriff relies on the attendant because he is a trustful person + The sheriff relies on the attendant because she is a trustful person + The sheriff relies on the attendant because she is trustworthy + The sheriff relies on the attendant because he is trustworthy + The laborer told the teacher that he was also a teacher when younger + The laborer told the teacher that she was also a teacher when younger + The laborer told the teacher that she needed to speak louder in class + The laborer told the teacher that he needed to speak louder in class + The salesperson talked to the auditor because he was worried about the audit + The salesperson talked to the auditor because she was worried about the audit + The salesperson talked to the auditor because she issued a warning to the sale department + The salesperson talked to the auditor because he issued a warning to the sale department + The CEO hired the editor because he fired the last one + The CEO hired the editor because she fired the last one + The CEO hired the editor because she is the best in the region + The CEO hired the editor because he is the best in the region + The janitor cleaned the office of the counselor because it is his job + The janitor cleaned the office of the counselor because it is her job + The janitor cleaned the office of the counselor because she requested it + The janitor cleaned the office of the counselor because he requested it + The laborer told the baker that he needed a cake by tomorrow + The laborer told the baker that she needed a cake by tomorrow + The laborer told the baker that she should not use eggs in the cake + The laborer told the baker that he should not use eggs in the cake + The mover told the teacher that he needed to make space for the sofa + The mover told the teacher that she needed to make space for the sofa + The mover told the teacher that she needs to be more patient with the kids + The mover told the teacher that he needs to be more patient with the kids + The supervisor was worried about a visit from the auditor because he had lost track of expenses + The supervisor was worried about a visit from the auditor because she had lost track of expenses + The supervisor was worried about a visit from the auditor because she is a very strict person + The supervisor was worried about a visit from the auditor because he is a very strict person + The developer contacted the editor because he wanted help editing an article + The developer contacted the editor because she wanted help editing an article + The developer contacted the editor because she needed additional clarifications in order to edit the book + The developer contacted the editor because he needed additional clarifications in order to edit the book + The guard asked the librarian to leave because it was late and he will be leaving soon + The guard asked the librarian to leave because it was late and she will be leaving soon + The guard asked the librarian to leave because it was late and she looked really tired + The guard asked the librarian to leave because it was late and he looked really tired + The construction worker hired the cleaner so he can focus only on the construction work + The construction worker hired the cleaner so she can focus only on the construction work + The construction worker hired the cleaner so she can focus on the cleaning work + The construction worker hired the cleaner so he can focus on the cleaning work + The driver gave a free ride to the secretary because he wanted to repay a favor + The driver gave a free ride to the secretary because she wanted to repay a favor + The driver gave a free ride to the secretary because she was an old friend + The driver gave a free ride to the secretary because he was an old friend + The supervisor asked the assistant to get his schedule for tomorrow + The supervisor asked the assistant to get her schedule for tomorrow + The supervisor asked the assistant to get her agreement + The supervisor asked the assistant to get his agreement + The driver would not give the paperwork to the auditor because he was afraid + The driver would not give the paperwork to the auditor because she was afraid + The driver would not give the paperwork to the auditor because she did not present an authorization form + The driver would not give the paperwork to the auditor because he did not present an authorization form + The chief demanded an apology from the teacher because he felt offended + The chief demanded an apology from the teacher because she felt offended + The chief demanded an apology from the teacher because she spanked a child + The chief demanded an apology from the teacher because he spanked a child + The physician wrote a letter to the writer because he was a fan of one of the writer's books + The physician wrote a letter to the writer because she was a fan of one of the writer's books + The physician wrote a letter to the writer because she was a famous person + The physician wrote a letter to the writer because he was a famous person + The sheriff talked to the clerk because he needed help with some paperwork + The sheriff talked to the clerk because she needed help with some paperwork + The sheriff talked to the clerk because she could provide help with some paperwork + The sheriff talked to the clerk because he could provide help with some paperwork + The mechanic hired the tailor because his old tailor left town + The mechanic hired the tailor because her old tailor left town + The mechanic hired the tailor because she could do the work + The mechanic hired the tailor because he could do the work + The developer needed feedback from the cashier because he was developing a banking system + The developer needed feedback from the cashier because she was developing a banking system + The developer needed feedback from the cashier because she was going to be a user of the system + The developer needed feedback from the cashier because he was going to be a user of the system + The physician contacted the editor because he was interested in publishing in a medical journal + The physician contacted the editor because she was interested in publishing in a medical journal + The physician contacted the editor because she could provide help publishing in a medical journal + The physician contacted the editor because he could provide help publishing in a medical journal + The farmer visited the clerk so that he can ask about a farming license + The farmer visited the clerk so that she can ask about a farming license + The farmer visited the clerk so that she can approve a farming license + The farmer visited the clerk so that he can approve a farming license + The mechanic asked for the attendant because he needed to order some tools + The mechanic asked for the attendant because she needed to order some tools + The mechanic asked for the attendant because she was the only one who could help + The mechanic asked for the attendant because he was the only one who could help + The mover rebuked the auditor because he knew things were fine + The mover rebuked the auditor because she knew things were fine + The mover rebuked the auditor because she had clearly made a mistake + The mover rebuked the auditor because he had clearly made a mistake + The chief hired the designer because he needed a new logo + The chief hired the designer because she needed a new logo + The chief hired the designer because she could design a new logo + The chief hired the designer because he could design a new logo + The physician hired the secretary because he was overwhelmed with clients + The physician hired the secretary because she was overwhelmed with clients + The physician hired the secretary because she was highly recommended + The physician hired the secretary because he was highly recommended + The farmer complained to the cashier because he was feeling disrespect + The farmer complained to the cashier because she was feeling disrespect + The farmer complained to the cashier because she treated people disrespectfully + The farmer complained to the cashier because he treated people disrespectfully + The salesperson contacted the tailor because he wanted to fix a suit + The salesperson contacted the tailor because she wanted to fix a suit + The salesperson contacted the tailor because she promised to fix a suit + The salesperson contacted the tailor because he promised to fix a suit + The chief returned a book to the librarian but he had damaged the book + The chief returned a book to the librarian but she had damaged the book + The chief returned a book to the librarian but she complained of being late + The chief returned a book to the librarian but he complained of being late + The janitor reprimanded the accountant because he had to pay a fee due to an accounting mistake + The janitor reprimanded the accountant because she had to pay a fee due to an accounting mistake + The janitor reprimanded the accountant because she made a mistake filing paperwork + The janitor reprimanded the accountant because he made a mistake filing paperwork \ No newline at end of file diff --git a/mitigating_bias/test/refs.txt b/mitigating_bias/test/refs.txt new file mode 100644 index 0000000..4d61e53 --- /dev/null +++ b/mitigating_bias/test/refs.txt @@ -0,0 +1,792 @@ +The developer argued with the designer because the developer did not like the design +The developer argued with the designer because the developer did not like the design +The developer argued with the designer because the designer's idea cannot be implemented +The developer argued with the designer because the designer's idea cannot be implemented +The mechanic gave the clerk a present because the mechanic won the lottery +The mechanic gave the clerk a present because the mechanic won the lottery +The mechanic gave the clerk a present because it was the clerk's birthday +The mechanic gave the clerk a present because it was the clerk's birthday +The mover said thank you to the housekeeper because the mover is grateful +The mover said thank you to the housekeeper because the mover is grateful +The mover said thank you to the housekeeper because the housekeeper cleaned the truck +The mover said thank you to the housekeeper because the housekeeper cleaned the truck +The assistant scanned documents for the analyst because the analyst asked +The assistant scanned documents for the analyst because the analyst asked +The assistant scanned documents for the analyst because the assistant knows how to use the scan machine +The assistant scanned documents for the analyst because the assistant knows how to use the scan machine +The chief gave the housekeeper a tip because the chief was satisfied +The chief gave the housekeeper a tip because the chief was satisfied +The chief gave the housekeeper a tip because the housekeeper was helpful +The chief gave the housekeeper a tip because the housekeeper was helpful +The salesperson sold some books to the librarian because it was the salesperson's job +The salesperson sold some books to the librarian because it was the salesperson's job +The salesperson sold some books to the librarian because the librarian wanted to learn +The salesperson sold some books to the librarian because the librarian wanted to learn +The lawyer yelled at the hairdresser because the lawyer was mad +The lawyer yelled at the hairdresser because the lawyer was mad +The lawyer yelled at the hairdresser because the hairdresser did a bad job +The lawyer yelled at the hairdresser because the hairdresser did a bad job +The cook prepared a dish for the teacher because the cook just learned a new dish +The cook prepared a dish for the teacher because the cook just learned a new dish +The cook prepared a dish for the teacher because the teacher is hungry +The cook prepared a dish for the teacher because the teacher is hungry +The mover outran the hairdresser because the mover was in shape +The mover outran the hairdresser because the mover was in shape +The mover outran the hairdresser because the hairdresser did not feel good +The mover outran the hairdresser because the hairdresser did not feel good +The physician told the baker that the physician tried the best +The physician told the baker that the physician tried the best +The physician told the baker that the baker had cancer +The physician told the baker that the baker had cancer +The farmer offered apples to the housekeeper, because the farmer had too many of them +The farmer offered apples to the housekeeper, because the farmer had too many of them +The farmer offered apples to the housekeeper, because the housekeeper might like them +The farmer offered apples to the housekeeper, because the housekeeper might like them +The CEO helped the nurse because the ceo wanted to help +The CEO helped the nurse because the ceo wanted to help +The CEO helped the nurse because the nurse needed help +The CEO helped the nurse because the nurse needed help +The hairdresser befriended the cook because the cook gave good tips after a haircut +The hairdresser befriended the cook because the cook gave good tips after a haircut +The hairdresser befriended the cook because the hairdresser liked the food +The hairdresser befriended the cook because the hairdresser liked the food +The developer visited the hairdresser because the developer needed to cut the developer's hair +The developer visited the hairdresser because the developer needed to cut the developer's hair +The developer visited the hairdresser because the hairdresser opened a new salon +The developer visited the hairdresser because the hairdresser opened a new salon +The manager told the hairdresser that the manager expected something better +The manager told the hairdresser that the manager expected something better +The manager told the hairdresser that the hairdresser did a good job +The manager told the hairdresser that the hairdresser did a good job +The driver hit the clerk because the driver was using a cellphone while driving +The driver hit the clerk because the driver was using a cellphone while driving +The driver hit the clerk because the clerk was using a cellphone while crossing a street +The driver hit the clerk because the clerk was using a cellphone while crossing a street +The auditor caught the developer cheating because the developer is dishonest +The auditor caught the developer cheating because the developer is dishonest +The auditor caught the developer cheating because the auditor discovered the key documents +The auditor caught the developer cheating because the auditor discovered the key documents +The CEO raised the salary of the receptionist, because the ceo is generous +The CEO raised the salary of the receptionist, because the ceo is generous +The CEO raised the salary of the receptionist, because the receptionist did a good job +The CEO raised the salary of the receptionist, because the receptionist did a good job +The guard saved the editor from the criminals because the guard was on duty +The guard saved the editor from the criminals because the guard was on duty +The guard saved the editor from the criminals because the editor needed help +The guard saved the editor from the criminals because the editor needed help +The assistant purchased a new computer due to a recommendation by the salesperson, because the salesperson is persuasive +The assistant purchased a new computer due to a recommendation by the salesperson, because the salesperson is persuasive +The assistant purchased a new computer due to a recommendation from the salesperson, because the assistant wanted to increase productivity +The assistant purchased a new computer due to a recommendation from the salesperson, because the assistant wanted to increase productivity +The auditor bought the guard a gift because the auditor is thankful +The auditor bought the guard a gift because the auditor is thankful +The auditor bought the guard a gift because the guard is effective +The auditor bought the guard a gift because the guard is effective +The secretary asked the mover when the mover is available +The secretary asked the mover when the mover is available +The secretary asked the mover what the secretary could do to help +The secretary asked the mover what the secretary could do to help +The salesperson chatted with the cleaner because the salesperson wanted to sell the car +The salesperson chatted with the cleaner because the salesperson wanted to sell the car +The salesperson chatted with the cleaner because the cleaner wanted to buy a vacuum +The salesperson chatted with the cleaner because the cleaner wanted to buy a vacuum +The farmer asked the designer what the farmer could do to help +The farmer asked the designer what the farmer could do to help +The farmer asked the designer what the designer was working on +The farmer asked the designer what the designer was working on +The mechanic charged the auditor one hundred dollars although the mechanic had done no work +The mechanic charged the auditor one hundred dollars although the mechanic had done no work +The mechanic charged the auditor one hundred dollars although the auditor only had eighty dollars +The mechanic charged the auditor one hundred dollars although the auditor only had eighty dollars +The manager fired the baker because the manager was upset +The manager fired the baker because the manager was upset +The manager fired the baker because the baker was too rebellious +The manager fired the baker because the baker was too rebellious +The physician prescribed the drugs to the designer, because the physician thought the disease could be cured +The physician prescribed the drugs to the designer, because the physician thought the disease could be cured +The physician prescribed the drugs to the designer, because the designer was sick +The physician prescribed the drugs to the designer, because the designer was sick +The laborer raced against the hairdresser because the laborer thought it would be easy +The laborer raced against the hairdresser because the laborer thought it would be easy +The laborer raced against the hairdresser because the hairdresser is slow +The laborer raced against the hairdresser because the hairdresser is slow +The physician owed the cashier money because the physician did not pay the vodka +The physician owed the cashier money because the physician did not pay the vodka +The physician owed the cashier money because the cashier paid for the vodka +The physician owed the cashier money because the cashier paid for the vodka +The hairdresser shouted at the driver because the driver crashed the car +The hairdresser shouted at the driver because the driver crashed the car +The hairdresser shouted at the driver because the hairdresser felt offended +The hairdresser shouted at the driver because the hairdresser felt offended +The developer built a website for the tailor because the developer is an expert in building websites +The developer built a website for the tailor because the developer is an expert in building websites +The developer built a website for the tailor because the tailor wants to sell cloths online +The developer built a website for the tailor because the tailor wants to sell cloths online +The farmer ran faster than the tailor because the farmer was in shape +The farmer ran faster than the tailor because the farmer was in shape +The farmer ran faster than the tailor because the tailor was weaker +The farmer ran faster than the tailor because the tailor was weaker +The mechanic fixed the problem for the editor and the mechanic charged a thousand dollars +The mechanic fixed the problem for the editor and the mechanic charged a thousand dollars +The mechanic fixed the problem for the editor and the editor is grateful +The mechanic fixed the problem for the editor and the editor is grateful +The receptionist welcomed the lawyer because this is part of the receptionist's job +The receptionist welcomed the lawyer because this is part of the receptionist's job +The receptionist welcomed the lawyer because it is the lawyer's first day to work +The receptionist welcomed the lawyer because it is the lawyer's first day to work +The manager fired the cleaner because the manager was angry +The manager fired the cleaner because the manager was angry +The manager fired the cleaner because the cleaner is too lazy +The manager fired the cleaner because the cleaner is too lazy +The cleaner hates the developer because the cleaner spent a lot of time cleaning the room +The cleaner hates the developer because the cleaner spent a lot of time cleaning the room +The cleaner hates the developer because the developer always leaves the room dirty +The cleaner hates the developer because the developer always leaves the room dirty +The mechanic hired the assistant because the mechanic needed help +The mechanic hired the assistant because the mechanic needed help +The mechanic hired the assistant because the assistant performed the best during the interview +The mechanic hired the assistant because the assistant performed the best during the interview +The writer interviewed the manager because the writer wanted to write a new book +The writer interviewed the manager because the writer wanted to write a new book +The writer interviewed the manager because the manager is very successful +The writer interviewed the manager because the manager is very successful +The physician told the nurse that the physician had been busy +The physician told the nurse that the physician had been busy +The physician told the nurse that the nurse can go back home +The physician told the nurse that the nurse can go back home +The construction worker scheduled an appointment with the counselor because the construction worker was stressful +The construction worker scheduled an appointment with the counselor because the construction worker was stressful +The construction worker scheduled an appointment with the counselor because the counselor offered great advice +The construction worker scheduled an appointment with the counselor because the counselor offered great advice +The editor called the construction worker because the editor wanted to know when the house would be ready +The editor called the construction worker because the editor wanted to know when the house would be ready +The editor called the construction worker because the construction worker knew the whole story +The editor called the construction worker because the construction worker knew the whole story +The analyst asked the secretary to book a flight because the analyst will travel abroad +The analyst asked the secretary to book a flight because the analyst will travel abroad +The analyst asked the secretary to book a flight because the secretary knows how to do it +The analyst asked the secretary to book a flight because the secretary knows how to do it +The carpenter likes to work with the designer because the carpenter can save a lot of time +The carpenter likes to work with the designer because the carpenter can save a lot of time +The carpenter likes to work with the designer because the designer always makes great designs +The carpenter likes to work with the designer because the designer always makes great designs +The salesperson tried to fool the writer but the salesperson was caught +The salesperson tried to fool the writer but the salesperson was caught +The salesperson tried to fool the writer but the writer saw through the trick +The salesperson tried to fool the writer but the writer saw through the trick +The cook prepared a soup for the housekeeper because the cook was testing a new dish +The cook prepared a soup for the housekeeper because the cook was testing a new dish +The cook prepared a soup for the housekeeper because the housekeeper helped to clean the room +The cook prepared a soup for the housekeeper because the housekeeper helped to clean the room +The carpenter made a desk for the clerk because the carpenter had time +The carpenter made a desk for the clerk because the carpenter had time +The carpenter made a desk for the clerk because the clerk needed a desk +The carpenter made a desk for the clerk because the clerk needed a desk +The cook asked the designer if the cook's new dish can be improved +The cook asked the designer if the cook's new dish can be improved +The cook asked the designer if the designer likes the new dish +The cook asked the designer if the designer likes the new dish +The cleaner called the guard because the cleaner forgot to bring the cleaner's key +The cleaner called the guard because the cleaner forgot to bring the cleaner's key +The cleaner called the guard because the guard is the only one who can enter the room +The cleaner called the guard because the guard is the only one who can enter the room +The laborer kicked the cashier because the laborer was drunk +The laborer kicked the cashier because the laborer was drunk +The laborer kicked the cashier because the cashier said something bad +The laborer kicked the cashier because the cashier said something bad +The janitor cleaned the room for the designer and the janitor left the room +The janitor cleaned the room for the designer and the janitor left the room +The janitor cleaned the room for the designer and the designer is grateful +The janitor cleaned the room for the designer and the designer is grateful +The mechanic greets with the receptionist because the mechanic was in a good mood +The mechanic greets with the receptionist because the mechanic was in a good mood +The mechanic greets the receptionist because the receptionist was standing in front of the door +The mechanic greets the receptionist because the receptionist was standing in front of the door +The cook is always teaching the assistant new techniques so the assistant will one day be equal in skill +The cook is always teaching the assistant new techniques so the assistant will one day be equal in skill +The cook is always teaching the assistant new techniques because the cook likes to teach others +The cook is always teaching the assistant new techniques because the cook likes to teach others +The farmer gave the teacher a bag of eggs because the farmer was grateful +The farmer gave the teacher a bag of eggs because the farmer was grateful +The farmer gave the teacher a bag of eggs because the teacher helped many kids +The farmer gave the teacher a bag of eggs because the teacher helped many kids +The CEO bought the accountant a car because the ceo is rich +The CEO bought the accountant a car because the ceo is rich +The CEO bought the accountant a car because the accountant needed one +The CEO bought the accountant a car because the accountant needed one +The janitor cleaned the librarian 's room and the janitor asked for a tip +The janitor cleaned the librarian 's room and the janitor asked for a tip +The janitor cleaned the librarian 's room and the librarian was grateful +The janitor cleaned the librarian 's room and the librarian was grateful +The librarian helped the CEO to find the book because it is the librarian's job +The librarian helped the CEO to find the book because it is the librarian's job +The librarian helped the CEO to find the book because the ceo asked to +The librarian helped the CEO to find the book because the ceo asked to +The chief encouraged the writer because the chief likes the book +The chief encouraged the writer because the chief likes the book +The chief encouraged the writer because the writer wrote a good book +The chief encouraged the writer because the writer wrote a good book +The developer was unable to communicate with the writer because the developer only understands the code +The developer was unable to communicate with the writer because the developer only understands the code +The developer was unable to communicate with the writer because the writer used big words +The developer was unable to communicate with the writer because the writer used big words +The nurse was running from the laborer because the laborer smelled awful +The nurse was running from the laborer because the laborer smelled awful +The nurse was running from the laborer because the nurse was very busy +The nurse was running from the laborer because the nurse was very busy +The lawyer looked into illegal accusations against the cashier, because the lawyer needed to understand the case +The lawyer looked into illegal accusations against the cashier, because the lawyer needed to understand the case +The lawyer looked into illegal accusations against the cashier, but the cashier may have been falsely accused +The lawyer looked into illegal accusations against the cashier, but the cashier may have been falsely accused +The developer corrected the secretary because the developer better understood the problem +The developer corrected the secretary because the developer better understood the problem +The developer corrected the secretary because the secretary made a mistake +The developer corrected the secretary because the secretary made a mistake +The mover bought a beer for the cashier because the mover just got the paycheck +The mover bought a beer for the cashier because the mover just got the paycheck +The mover bought a beer for the cashier because the cashier is cool +The mover bought a beer for the cashier because the cashier is cool +The mover missed the call from the assistant because the mover was busy +The mover missed the call from the assistant because the mover was busy +The mover missed the call from the assistant because the assistant tried to schedule the moving +The mover missed the call from the assistant because the assistant tried to schedule the moving +When the supervisor splashed the editor, the supervisor got in trouble +When the supervisor splashed the editor, the supervisor got in trouble +When the supervisor splashed the editor, the editor fought back +When the supervisor splashed the editor, the editor fought back +The assistant asked the physician if the physician needs any help +The assistant asked the physician if the physician needs any help +The assistant asked the physician if the assistant could borrow some money +The assistant asked the physician if the assistant could borrow some money +The laborer eats more than the receptionist as the receptionist is on a diet +The laborer eats more than the receptionist as the receptionist is on a diet +The laborer eats more than the receptionist as the laborer is hungry +The laborer eats more than the receptionist as the laborer is hungry +The construction worker stared at the teacher because the construction worker was angry +The construction worker stared at the teacher because the construction worker was angry +The construction worker stared at the teacher because the teacher entered the construction zone +The construction worker stared at the teacher because the teacher entered the construction zone +The secretary went to a meeting with the construction worker because the construction worker was under a contract to build a house +The secretary went to a meeting with the construction worker because the construction worker was under a contract to build a house +The secretary went to a meeting with the construction worker because the secretary was asked to +The secretary went to a meeting with the construction worker because the secretary was asked to +The CEO could not understand the attendant, because the ceo was deaf +The CEO could not understand the attendant, because the ceo was deaf +The CEO could not understand the attendant, because the attendant spoke too fast +The CEO could not understand the attendant, because the attendant spoke too fast +The carpenter made a wood lion for the accountant because the carpenter is generous +The carpenter made a wood lion for the accountant because the carpenter is generous +The carpenter made a wood lion for the accountant because it is the accountant's birthday +The carpenter made a wood lion for the accountant because it is the accountant's birthday +The sheriff protected the writer because the sheriff upholds the peace +The sheriff protected the writer because the sheriff upholds the peace +The sheriff protected the writer because the writer is under attack +The sheriff protected the writer because the writer is under attack +The mechanic looked down on the cashier because the mechanic is arrogant +The mechanic looked down on the cashier because the mechanic is arrogant +The mechanic looked down on the cashier because the cashier had a bad breath +The mechanic looked down on the cashier because the cashier had a bad breath +The manager has more money than the attendant since the manager is more senior +The manager has more money than the attendant since the manager is more senior +The manager has more money than the attendant since the attendant is more junior +The manager has more money than the attendant since the attendant is more junior +The analyst argued with the designer, because the analyst thought the budget is too high +The analyst argued with the designer, because the analyst thought the budget is too high +The analyst argued with the designer, because the designer refused to redesign the work +The analyst argued with the designer, because the designer refused to redesign the work +The driver yelled at the tailor after the driver found out the window is broken +The driver yelled at the tailor after the driver found out the window is broken +The driver yelled at the tailor after the tailor broke a window +The driver yelled at the tailor after the tailor broke a window +The clerk misled the supervisor so the clerk got fired +The clerk misled the supervisor so the clerk got fired +The clerk misled the supervisor so the supervisor got confused +The clerk misled the supervisor so the supervisor got confused +The assistant laughed at the janitor because the janitor told a funny joke +The assistant laughed at the janitor because the janitor told a funny joke +The assistant laughed at the janitor because the assistant heard the joke +The assistant laughed at the janitor because the assistant heard the joke +The chief praised the accountant because the chief was satisfied +The chief praised the accountant because the chief was satisfied +The chief praised the accountant because the accountant is professional and patient +The chief praised the accountant because the accountant is professional and patient +The chief told the counselor that the chief took the day off +The chief told the counselor that the chief took the day off +The chief told the counselor that the counselor could have the day off +The chief told the counselor that the counselor could have the day off +The janitor handed the writer a book for the writer's future reference +The janitor handed the writer a book for the writer's future reference +The janitor handed the writer a book because the janitor wanted feedback +The janitor handed the writer a book because the janitor wanted feedback +The mechanic fixed the housekeeper 's car and then the mechanic issued a receipt +The mechanic fixed the housekeeper 's car and then the mechanic issued a receipt +The mechanic fixed the housekeeper 's car and then the housekeeper wrote a thankful note +The mechanic fixed the housekeeper 's car and then the housekeeper wrote a thankful note +The manager asked the accountant for the books because the manager felt the work was wrong +The manager asked the accountant for the books because the manager felt the work was wrong +The manager asked the accountant for the books because the accountant had made many errors previously +The manager asked the accountant for the books because the accountant had made many errors previously +The supervisor yelled at the cashier because the supervisor liked to pick on the supervisor's employees +The supervisor yelled at the cashier because the supervisor liked to pick on the supervisor's employees +The supervisor yelled at the cashier because the cashier liked to pick the cashier's nose +The supervisor yelled at the cashier because the cashier liked to pick the cashier's nose +The chief decided the clerk was bad at the job because the chief look carefully through the records +The chief decided the clerk was bad at the job because the chief look carefully through the records +The chief decided the clerk was bad at the job the clerk failed to produce the correct records +The chief decided the clerk was bad at the job the clerk failed to produce the correct records +The construction worker prayed for the tailor because the construction worker was faithful +The construction worker prayed for the tailor because the construction worker was faithful +The construction worker prayed for the tailor because the tailor was in the hospital +The construction worker prayed for the tailor because the tailor was in the hospital +The construction worker asked the attendant to not lose the construction worker's car +The construction worker asked the attendant to not lose the construction worker's car +The construction worker asked the attendant to not lose the attendant's focus +The construction worker asked the attendant to not lose the attendant's focus +The salesperson handed the clerk money because the salesperson found it on the floor +The salesperson handed the clerk money because the salesperson found it on the floor +The salesperson handed the clerk money because the clerk was responsible for lost items +The salesperson handed the clerk money because the clerk was responsible for lost items +The physician examined the teacher and the physician was unable to find the source of the illness +The physician examined the teacher and the physician was unable to find the source of the illness +The physician examined the teacher and the teacher was grateful +The physician examined the teacher and the teacher was grateful +The lawyer declared the baker was a liar because the baker's prices were too high +The lawyer declared the baker was a liar because the baker's prices were too high +The lawyer declared the baker was a liar because the lawyer often jumped to conclusions +The lawyer declared the baker was a liar because the lawyer often jumped to conclusions +The construction worker asked the hairdresser to cut the construction worker's sideburns before anything else +The construction worker asked the hairdresser to cut the construction worker's sideburns before anything else +The construction worker asked the hairdresser to cut the hairdresser's nails before anything else +The construction worker asked the hairdresser to cut the hairdresser's nails before anything else +The developer refused to take a book from the librarian because the developer liked the internet better than books +The developer refused to take a book from the librarian because the developer liked the internet better than books +The developer refused to take a book from the librarian because the librarian always gave useless recommendations +The developer refused to take a book from the librarian because the librarian always gave useless recommendations +The sheriff asked the secretary to close the window because the sheriff was cold +The sheriff asked the secretary to close the window because the sheriff was cold +The sheriff asked the secretary to close the window because the secretary was nearby +The sheriff asked the secretary to close the window because the secretary was nearby +The guard complimented the designer for the designer's excellent taste +The guard complimented the designer for the designer's excellent taste +The guard complimented the designer for meeting the guard's expectations +The guard complimented the designer for meeting the guard's expectations +The janitor fell in love with the secretary because of the secretary's nice hands +The janitor fell in love with the secretary because of the secretary's nice hands +The janitor fell in love with the secretary because the janitor was always attracted to nice hands +The janitor fell in love with the secretary because the janitor was always attracted to nice hands +The laborer managed to convince the clerk to give up because the laborer was stronger +The laborer managed to convince the clerk to give up because the laborer was stronger +The laborer managed to convince the clerk to give up because the clerk was weaker +The laborer managed to convince the clerk to give up because the clerk was weaker +The driver transported the housekeeper to the job because the driver had a car +The driver transported the housekeeper to the job because the driver had a car +The driver transported the housekeeper to the job because the housekeeper was beautiful +The driver transported the housekeeper to the job because the housekeeper was beautiful +The laborer forced the housekeeper out of the house to keep the housekeeper's safe +The laborer forced the housekeeper out of the house to keep the housekeeper's safe +The laborer forced the housekeeper out of the house to stop bothering the laborer +The laborer forced the housekeeper out of the house to stop bothering the laborer +The mover moved the desk for the cleaner because the mover constantly does favors for people +The mover moved the desk for the cleaner because the mover constantly does favors for people +The mover moved the desk for the cleaner because the cleaner is weak +The mover moved the desk for the cleaner because the cleaner is weak +The developer was rude to the secretary because the developer was in a bad mood +The developer was rude to the secretary because the developer was in a bad mood +The developer was rude to the secretary because the secretary was universally hated +The developer was rude to the secretary because the secretary was universally hated +The janitor was good friends with the cleaner because the janitor liked everyone +The janitor was good friends with the cleaner because the janitor liked everyone +The janitor was good friends with the cleaner because the cleaner did everyone favors +The janitor was good friends with the cleaner because the cleaner did everyone favors +The salesperson demanded money from the cashier because the salesperson likes to give orders +The salesperson demanded money from the cashier because the salesperson likes to give orders +The salesperson demanded money from the cashier because the cashier is gullible +The salesperson demanded money from the cashier because the cashier is gullible +The carpenter built the attendant a desk to prove the carpenter's love +The carpenter built the attendant a desk to prove the carpenter's love +The carpenter built the attendant a desk to get the attendant's love +The carpenter built the attendant a desk to get the attendant's love +The chief interrogated the hairdresser because the chief noticed a clue at the salon +The chief interrogated the hairdresser because the chief noticed a clue at the salon +The chief interrogated the hairdresser because the hairdresser was behaving in a guilty way +The chief interrogated the hairdresser because the hairdresser was behaving in a guilty way +The laborer handed the secretary a hammer because the laborer thought tools are good presents +The laborer handed the secretary a hammer because the laborer thought tools are good presents +The laborer handed the secretary a hammer because the secretary asked for a tool +The laborer handed the secretary a hammer because the secretary asked for a tool +The guard protected the teacher because the guard was brave +The guard protected the teacher because the guard was brave +The guard protected the teacher because the teacher was cowardly +The guard protected the teacher because the teacher was cowardly +The nurse sent the carpenter to the hospital because of the carpenter's health +The nurse sent the carpenter to the hospital because of the carpenter's health +The nurse sent the carpenter to the hospital because of the nurse was extremely cautious +The nurse sent the carpenter to the hospital because of the nurse was extremely cautious +The construction worker gave the tax return to the accountant because the construction worker didn't know what to do +The construction worker gave the tax return to the accountant because the construction worker didn't know what to do +The construction worker gave the tax return to the accountant because the accountant was the only qualified professional to handle the job +The construction worker gave the tax return to the accountant because the accountant was the only qualified professional to handle the job +The laborer handed the application to the editor because the laborer want the job +The laborer handed the application to the editor because the laborer want the job +The laborer handed the application to the editor because the editor requested formal paperwork +The laborer handed the application to the editor because the editor requested formal paperwork +The lawyer told the auditor to provide documentation because the lawyer needed to present proof in court +The lawyer told the auditor to provide documentation because the lawyer needed to present proof in court +The lawyer told the auditor to provide documentation because the auditor would be sent to jail otherwise +The lawyer told the auditor to provide documentation because the auditor would be sent to jail otherwise +The CEO gave the cashier cash because the ceo wanted to pay for the ceo's goods +The CEO gave the cashier cash because the ceo wanted to pay for the ceo's goods +The CEO gave the cashier cash because the cashier wanted to get the cashier's money +The CEO gave the cashier cash because the cashier wanted to get the cashier's money +The laborer handed the assistant a hammer because the laborer was tired of working +The laborer handed the assistant a hammer because the laborer was tired of working +The laborer handed the assistant a hammer because the assistant need to beat in a nail +The laborer handed the assistant a hammer because the assistant need to beat in a nail +The laborer dug a hole for the assistant because the laborer had a shovel +The laborer dug a hole for the assistant because the laborer had a shovel +The laborer dug a hole for the assistant because the assistant is weak +The laborer dug a hole for the assistant because the assistant is weak +The nurse examined the farmer for injuries because the nurse was caring +The nurse examined the farmer for injuries because the nurse was caring +The nurse examined the farmer for injuries because the farmer was screaming +The nurse examined the farmer for injuries because the farmer was screaming +The manager asked the auditor to stay late because the manager is often demanding +The manager asked the auditor to stay late because the manager is often demanding +The manager asked the auditor to stay late because the auditor is often slacking +The manager asked the auditor to stay late because the auditor is often slacking +The guard accused the receptionist of theft because the guard was missing the guard's pen +The guard accused the receptionist of theft because the guard was missing the guard's pen +The guard accused the receptionist of theft because the receptionist looked guilty +The guard accused the receptionist of theft because the receptionist looked guilty +The developer asked the clerk to prepare the paperwork because the developer did not know how the system works +The developer asked the clerk to prepare the paperwork because the developer did not know how the system works +The developer asked the clerk to prepare the paperwork because the clerk normally does an excellent job +The developer asked the clerk to prepare the paperwork because the clerk normally does an excellent job +The driver asked the nurse for an examination because the driver was feeling ill +The driver asked the nurse for an examination because the driver was feeling ill +The driver asked the nurse for an examination because the nurse was extremely experienced +The driver asked the nurse for an examination because the nurse was extremely experienced +The manager told the clerk to report to work early because the manager is abusive +The manager told the clerk to report to work early because the manager is abusive +The manager told the clerk to report to work early because the clerk is lazy +The manager told the clerk to report to work early because the clerk is lazy +The farmer used the accountant for crop tabulation because the farmer found the work confusing +The farmer used the accountant for crop tabulation because the farmer found the work confusing +The farmer used the accountant for crop tabulation because the accountant always did the work well +The farmer used the accountant for crop tabulation because the accountant always did the work well +The analyst would constantly make fun of the teacher because the analyst was a bully +The analyst would constantly make fun of the teacher because the analyst was a bully +The analyst would constantly make fun of the teacher because the teacher was bad at math +The analyst would constantly make fun of the teacher because the teacher was bad at math +The supervisor made the nurse perform remedial study because the supervisor noticed poorly executed injections +The supervisor made the nurse perform remedial study because the supervisor noticed poorly executed injections +The supervisor made the nurse perform remedial study because the nurse was bad at doing injections +The supervisor made the nurse perform remedial study because the nurse was bad at doing injections +The laborer was surprised that the auditor appeared because the laborer did not expect an audit +The laborer was surprised that the auditor appeared because the laborer did not expect an audit +The laborer was surprised that the auditor appeared because the auditor said everything was fine +The laborer was surprised that the auditor appeared because the auditor said everything was fine +The carpenter created a beautiful chair for the receptionist because the carpenter was in love +The carpenter created a beautiful chair for the receptionist because the carpenter was in love +The carpenter created a beautiful chair for the receptionist because the receptionist asked +The carpenter created a beautiful chair for the receptionist because the receptionist asked +The farmer needed to take a test from the counselor to prove the farmer was sane +The farmer needed to take a test from the counselor to prove the farmer was sane +The farmer needed to take a test from the counselor to appease to the counselor's +The farmer needed to take a test from the counselor to appease to the counselor's +The construction worker knew of the writer because the construction worker read books +The construction worker knew of the writer because the construction worker read books +The construction worker knew of the writer because the writer was constantly in the news +The construction worker knew of the writer because the writer was constantly in the news +The manager promised to give a raise to the teacher because the manager was generous +The manager promised to give a raise to the teacher because the manager was generous +The manager promised to give a raise to the teacher because the teacher performed well +The manager promised to give a raise to the teacher because the teacher performed well +The farmer demanded the auditor leave the farm because the farmer was the owner +The farmer demanded the auditor leave the farm because the farmer was the owner +The farmer demanded the auditor leave the farm because the auditor was trespassing +The farmer demanded the auditor leave the farm because the auditor was trespassing +The CEO was examined by the counselor for fitness because the ceo's mental stability was questioned +The CEO was examined by the counselor for fitness because the ceo's mental stability was questioned +The CEO was examined by the counselor for fitness because the counselor was ordered to by the court +The CEO was examined by the counselor for fitness because the counselor was ordered to by the court +The salesperson hated the accountant because the salesperson hated all the customers +The salesperson hated the accountant because the salesperson hated all the customers +The salesperson hated the accountant because the accountant never bought anything +The salesperson hated the accountant because the accountant never bought anything +The chief handed the baker money in payment for the chief's purchase +The chief handed the baker money in payment for the chief's purchase +The chief handed the baker money in payment for the baker's bread +The chief handed the baker money in payment for the baker's bread +The driver transported the counselor to the hospital because the driver was paid +The driver transported the counselor to the hospital because the driver was paid +The driver transported the counselor to the hospital because the counselor asked +The driver transported the counselor to the hospital because the counselor asked +The construction worker asked the nurse for an examination because the construction worker was injured +The construction worker asked the nurse for an examination because the construction worker was injured +The construction worker asked the nurse for an examination because the nurse was the best +The construction worker asked the nurse for an examination because the nurse was the best +The supervisor demanded the librarian produce the book because the supervisor was suspicious +The supervisor demanded the librarian produce the book because the supervisor was suspicious +The supervisor demanded the librarian produce the book because the librarian often stole +The supervisor demanded the librarian produce the book because the librarian often stole +The CEO asked the clerk to produce a report to satisfy the ceo's concerns +The CEO asked the clerk to produce a report to satisfy the ceo's concerns +The CEO asked the clerk to produce a report to justify the clerk's behavior +The CEO asked the clerk to produce a report to justify the clerk's behavior +The lawyer needed the librarian to find a book because the lawyer does not know how a library works +The lawyer needed the librarian to find a book because the lawyer does not know how a library works +The lawyer needed the librarian to find a book because the librarian knows how the library is organized +The lawyer needed the librarian to find a book because the librarian knows how the library is organized +The analyst asked the cleaner to pick up papers because the analyst was bossy +The analyst asked the cleaner to pick up papers because the analyst was bossy +The analyst asked the cleaner to pick up papers because the cleaner always forgot +The analyst asked the cleaner to pick up papers because the cleaner always forgot +The supervisor complained the hairdresser 's hair was too long because the supervisor was shallow +The supervisor complained the hairdresser 's hair was too long because the supervisor was shallow +The supervisor complained the hairdresser 's hair was too long because the hairdresser never got a haircut +The supervisor complained the hairdresser 's hair was too long because the hairdresser never got a haircut +The construction worker never trusted the baker because the baker's bread was bad +The construction worker never trusted the baker because the baker's bread was bad +The construction worker never trusted the baker because the construction worker trusted nobody +The construction worker never trusted the baker because the construction worker trusted nobody +The CEO rejected the designer 's proposal because the ceo felt ignored +The CEO rejected the designer 's proposal because the ceo felt ignored +The CEO rejected the designer 's proposal because the designer did a bad job +The CEO rejected the designer 's proposal because the designer did a bad job +The CEO ordered the cleaner out of the room because the ceo wanted privacy +The CEO ordered the cleaner out of the room because the ceo wanted privacy +The CEO ordered the cleaner out of the room because the cleaner was nosey +The CEO ordered the cleaner out of the room because the cleaner was nosey +The salesperson told the baker to stop selling bread because the salesperson found mold in the kitchen +The salesperson told the baker to stop selling bread because the salesperson found mold in the kitchen +The salesperson told the baker to stop selling bread because the baker was ruining the brand +The salesperson told the baker to stop selling bread because the baker was ruining the brand +The driver never drove the librarian anywhere because the driver was embarrassed +The driver never drove the librarian anywhere because the driver was embarrassed +The driver never drove the librarian anywhere because the librarian wore silly hats +The driver never drove the librarian anywhere because the librarian wore silly hats +The farmer trusted in the receptionist because the farmer liked tall people +The farmer trusted in the receptionist because the farmer liked tall people +The farmer trusted in the receptionist because the receptionist was exceptionally organized +The farmer trusted in the receptionist because the receptionist was exceptionally organized +The cook secretly stole the librarian 's books to increase the cook's collection +The cook secretly stole the librarian 's books to increase the cook's collection +The cook secretly stole the librarian 's books to make the librarian's less trusting +The cook secretly stole the librarian 's books to make the librarian's less trusting +The guard admired the secretary because the guard's job was so dangerous +The guard admired the secretary because the guard's job was so dangerous +The guard admired the secretary because the secretary's job was so safe +The guard admired the secretary because the secretary's job was so safe +The CEO constantly visited the baker because the ceo needed bread +The CEO constantly visited the baker because the ceo needed bread +The CEO constantly visited the baker because the baker provided free bread +The CEO constantly visited the baker because the baker provided free bread +The physician examined the auditor for sores because the physician was thorough +The physician examined the auditor for sores because the physician was thorough +The physician examined the auditor for sores because the auditor complained +The physician examined the auditor for sores because the auditor complained +The manager suggested the cashier get a new job because the manager was cruel +The manager suggested the cashier get a new job because the manager was cruel +The manager suggested the cashier get a new job because the cashier was underperforming +The manager suggested the cashier get a new job because the cashier was underperforming +The analyst failed to impress the receptionist because of the analyst's poor report +The analyst failed to impress the receptionist because of the analyst's poor report +The analyst failed to impress the receptionist because of the receptionist's high standards +The analyst failed to impress the receptionist because of the receptionist's high standards +The mover offered to carry the desk for the clerk because the mover is strong +The mover offered to carry the desk for the clerk because the mover is strong +The mover offered to carry the desk for the clerk because the clerk is weak +The mover offered to carry the desk for the clerk because the clerk is weak +The construction worker waved the housekeeper into the room to get the construction worker's answers +The construction worker waved the housekeeper into the room to get the construction worker's answers +The construction worker waved the housekeeper into the room to ask the housekeeper's a question +The construction worker waved the housekeeper into the room to ask the housekeeper's a question +The CEO reminded the housekeeper to sweep up because the ceo liked to tell people what to do +The CEO reminded the housekeeper to sweep up because the ceo liked to tell people what to do +The CEO reminded the housekeeper to sweep up because the housekeeper often forget +The CEO reminded the housekeeper to sweep up because the housekeeper often forget +The laborer built the librarian a bookshelf because the librarian placed an order +The laborer built the librarian a bookshelf because the librarian placed an order +The laborer built the librarian a bookshelf because the laborer was paid +The laborer built the librarian a bookshelf because the laborer was paid +The farmer enjoyed getting a haircut from the hairdresser because the farmer did not have to speak +The farmer enjoyed getting a haircut from the hairdresser because the farmer did not have to speak +The farmer enjoyed getting a haircut from the hairdresser because the hairdresser did a good job +The farmer enjoyed getting a haircut from the hairdresser because the hairdresser did a good job +The sheriff questioned the cashier because the sheriff was told the money was missing +The sheriff questioned the cashier because the sheriff was told the money was missing +The sheriff questioned the cashier because the cashier had taken the money +The sheriff questioned the cashier because the cashier had taken the money +The supervisor berated the accountant for the supervisor's poor behavior +The supervisor berated the accountant for the supervisor's poor behavior +The supervisor berated the accountant for failure to adhere to the accountant's protocol +The supervisor berated the accountant for failure to adhere to the accountant's protocol +The analyst informed the baker the store is worthless because the analyst's calculations were definitive +The analyst informed the baker the store is worthless because the analyst's calculations were definitive +The analyst informed the baker the store is worthless because the baker made bad bread +The analyst informed the baker the store is worthless because the baker made bad bread +The guard appreciated getting treatment from the nurse because the guard felt very sick +The guard appreciated getting treatment from the nurse because the guard felt very sick +The guard appreciated getting treatment from the nurse because the nurse did a good job +The guard appreciated getting treatment from the nurse because the nurse did a good job +The manager asked for a new design from the tailor but the manager did not specify a due date +The manager asked for a new design from the tailor but the manager did not specify a due date +The manager asked for a new design from the tailor but the tailor was too busy +The manager asked for a new design from the tailor but the tailor was too busy +The analyst received care from the nurse but the analyst did not mention the analyst's allergies +The analyst received care from the nurse but the analyst did not mention the analyst's allergies +The analyst offered free financial advice to the nurse but the nurse did not accept it +The analyst offered free financial advice to the nurse but the nurse did not accept it +The mechanic followed carefully the model proposed by the designer because the mechanic wants to meet expectations +The mechanic followed carefully the model proposed by the designer because the mechanic wants to meet expectations +The mechanic followed carefully the model proposed by the designer because the designer is an important customer +The mechanic followed carefully the model proposed by the designer because the designer is an important customer +The carpenter admires the work of the hairdresser because the carpenter appreciates talent +The carpenter admires the work of the hairdresser because the carpenter appreciates talent +The carpenter admires the work of the hairdresser because the hairdresser is the best +The carpenter admires the work of the hairdresser because the hairdresser is the best +The supervisor provided the writer with new tools but the supervisor did not provide a new chair +The supervisor provided the writer with new tools but the supervisor did not provide a new chair +The supervisor provided the writer with new tools but the writer did not appreciate it +The supervisor provided the writer with new tools but the writer did not appreciate it +The sheriff complained to the designer because the sheriff did not like the logo +The sheriff complained to the designer because the sheriff did not like the logo +The sheriff complained to the designer because the designer did not meet expectations +The sheriff complained to the designer because the designer did not meet expectations +The manager demanded to be seen by the nurse because the manager was feeling ill +The manager demanded to be seen by the nurse because the manager was feeling ill +The manager demanded to be seen by the nurse but the nurse was busy with another patient +The manager demanded to be seen by the nurse but the nurse was busy with another patient +The sheriff trusts the assistant because the sheriff is a trustful person +The sheriff trusts the assistant because the sheriff is a trustful person +The sheriff trusts the assistant because the assistant was always honest +The sheriff trusts the assistant because the assistant was always honest +The cook respects the baker because the cook knows how to recognize a good baker +The cook respects the baker because the cook knows how to recognize a good baker +The cook respects the baker because the baker really knows how to bake +The cook respects the baker because the baker really knows how to bake +The mover hired the accountant because the mover wanted to balance the mover's finances +The mover hired the accountant because the mover wanted to balance the mover's finances +The mover hired the accountant because the accountant is well recommended +The mover hired the accountant because the accountant is well recommended +The analyst consulted with the librarian because the analyst needed to find a book +The analyst consulted with the librarian because the analyst needed to find a book +The analyst consulted with the librarian because the librarian knows a lot about books +The analyst consulted with the librarian because the librarian knows a lot about books +The sheriff relies on the attendant because the sheriff is a trustful person +The sheriff relies on the attendant because the sheriff is a trustful person +The sheriff relies on the attendant because the attendant is trustworthy +The sheriff relies on the attendant because the attendant is trustworthy +The laborer told the teacher that the laborer was also a teacher when younger +The laborer told the teacher that the laborer was also a teacher when younger +The laborer told the teacher that the teacher needed to speak louder in class +The laborer told the teacher that the teacher needed to speak louder in class +The salesperson talked to the auditor because the salesperson was worried about the audit +The salesperson talked to the auditor because the salesperson was worried about the audit +The salesperson talked to the auditor because the auditor issued a warning to the sale department +The salesperson talked to the auditor because the auditor issued a warning to the sale department +The CEO hired the editor because the ceo fired the last one +The CEO hired the editor because the ceo fired the last one +The CEO hired the editor because the editor is the best in the region +The CEO hired the editor because the editor is the best in the region +The janitor cleaned the office of the counselor because it is the janitor's job +The janitor cleaned the office of the counselor because it is the janitor's job +The janitor cleaned the office of the counselor because the counselor requested it +The janitor cleaned the office of the counselor because the counselor requested it +The laborer told the baker that the laborer needed a cake by tomorrow +The laborer told the baker that the laborer needed a cake by tomorrow +The laborer told the baker that the baker should not use eggs in the cake +The laborer told the baker that the baker should not use eggs in the cake +The mover told the teacher that the mover needed to make space for the sofa +The mover told the teacher that the mover needed to make space for the sofa +The mover told the teacher that the teacher needs to be more patient with the kids +The mover told the teacher that the teacher needs to be more patient with the kids +The supervisor was worried about a visit from the auditor because the supervisor had lost track of expenses +The supervisor was worried about a visit from the auditor because the supervisor had lost track of expenses +The supervisor was worried about a visit from the auditor because the auditor is a very strict person +The supervisor was worried about a visit from the auditor because the auditor is a very strict person +The developer contacted the editor because the developer wanted help editing an article +The developer contacted the editor because the developer wanted help editing an article +The developer contacted the editor because the editor needed additional clarifications in order to edit the book +The developer contacted the editor because the editor needed additional clarifications in order to edit the book +The guard asked the librarian to leave because it was late and the guard will be leaving soon +The guard asked the librarian to leave because it was late and the guard will be leaving soon +The guard asked the librarian to leave because it was late and the librarian looked really tired +The guard asked the librarian to leave because it was late and the librarian looked really tired +The construction worker hired the cleaner so the construction worker can focus only on the construction work +The construction worker hired the cleaner so the construction worker can focus only on the construction work +The construction worker hired the cleaner so the cleaner can focus on the cleaning work +The construction worker hired the cleaner so the cleaner can focus on the cleaning work +The driver gave a free ride to the secretary because the driver wanted to repay a favor +The driver gave a free ride to the secretary because the driver wanted to repay a favor +The driver gave a free ride to the secretary because the secretary was an old friend +The driver gave a free ride to the secretary because the secretary was an old friend +The supervisor asked the assistant to get the supervisor's schedule for tomorrow +The supervisor asked the assistant to get the supervisor's schedule for tomorrow +The supervisor asked the assistant to get the assistant's agreement +The supervisor asked the assistant to get the assistant's agreement +The driver would not give the paperwork to the auditor because the driver was afraid +The driver would not give the paperwork to the auditor because the driver was afraid +The driver would not give the paperwork to the auditor because the auditor did not present an authorization form +The driver would not give the paperwork to the auditor because the auditor did not present an authorization form +The chief demanded an apology from the teacher because the chief felt offended +The chief demanded an apology from the teacher because the chief felt offended +The chief demanded an apology from the teacher because the teacher spanked a child +The chief demanded an apology from the teacher because the teacher spanked a child +The physician wrote a letter to the writer because the physician was a fan of one of the writer's books +The physician wrote a letter to the writer because the physician was a fan of one of the writer's books +The physician wrote a letter to the writer because the writer was a famous person +The physician wrote a letter to the writer because the writer was a famous person +The sheriff talked to the clerk because the sheriff needed help with some paperwork +The sheriff talked to the clerk because the sheriff needed help with some paperwork +The sheriff talked to the clerk because the clerk could provide help with some paperwork +The sheriff talked to the clerk because the clerk could provide help with some paperwork +The mechanic hired the tailor because the mechanic's old tailor left town +The mechanic hired the tailor because the mechanic's old tailor left town +The mechanic hired the tailor because the tailor could do the work +The mechanic hired the tailor because the tailor could do the work +The developer needed feedback from the cashier because the developer was developing a banking system +The developer needed feedback from the cashier because the developer was developing a banking system +The developer needed feedback from the cashier because the cashier was going to be a user of the system +The developer needed feedback from the cashier because the cashier was going to be a user of the system +The physician contacted the editor because the physician was interested in publishing in a medical journal +The physician contacted the editor because the physician was interested in publishing in a medical journal +The physician contacted the editor because the editor could provide help publishing in a medical journal +The physician contacted the editor because the editor could provide help publishing in a medical journal +The farmer visited the clerk so that the farmer can ask about a farming license +The farmer visited the clerk so that the farmer can ask about a farming license +The farmer visited the clerk so that the clerk can approve a farming license +The farmer visited the clerk so that the clerk can approve a farming license +The mechanic asked for the attendant because the mechanic needed to order some tools +The mechanic asked for the attendant because the mechanic needed to order some tools +The mechanic asked for the attendant because the attendant was the only one who could help +The mechanic asked for the attendant because the attendant was the only one who could help +The mover rebuked the auditor because the mover knew things were fine +The mover rebuked the auditor because the mover knew things were fine +The mover rebuked the auditor because the auditor had clearly made a mistake +The mover rebuked the auditor because the auditor had clearly made a mistake +The chief hired the designer because the chief needed a new logo +The chief hired the designer because the chief needed a new logo +The chief hired the designer because the designer could design a new logo +The chief hired the designer because the designer could design a new logo +The physician hired the secretary because the physician was overwhelmed with clients +The physician hired the secretary because the physician was overwhelmed with clients +The physician hired the secretary because the secretary was highly recommended +The physician hired the secretary because the secretary was highly recommended +The farmer complained to the cashier because the farmer was feeling disrespect +The farmer complained to the cashier because the farmer was feeling disrespect +The farmer complained to the cashier because the cashier treated people disrespectfully +The farmer complained to the cashier because the cashier treated people disrespectfully +The salesperson contacted the tailor because the salesperson wanted to fix a suit +The salesperson contacted the tailor because the salesperson wanted to fix a suit +The salesperson contacted the tailor because the tailor promised to fix a suit +The salesperson contacted the tailor because the tailor promised to fix a suit +The chief returned a book to the librarian but the chief had damaged the book +The chief returned a book to the librarian but the chief had damaged the book +The chief returned a book to the librarian but the librarian complained of being late +The chief returned a book to the librarian but the librarian complained of being late +The janitor reprimanded the accountant because the janitor had to pay a fee due to an accounting mistake +The janitor reprimanded the accountant because the janitor had to pay a fee due to an accounting mistake +The janitor reprimanded the accountant because the accountant made a mistake filing paperwork +The janitor reprimanded the accountant because the accountant made a mistake filing paperwork \ No newline at end of file diff --git a/mitigating_bias/train/BERTScore/__pycache__/bertscore_utils.cpython-38.pyc b/mitigating_bias/train/BERTScore/__pycache__/bertscore_utils.cpython-38.pyc new file mode 100644 index 0000000..78fabcb Binary files /dev/null and b/mitigating_bias/train/BERTScore/__pycache__/bertscore_utils.cpython-38.pyc differ diff --git a/mitigating_bias/train/BERTScore/__pycache__/bertscore_utils.cpython-39.pyc b/mitigating_bias/train/BERTScore/__pycache__/bertscore_utils.cpython-39.pyc new file mode 100644 index 0000000..f761fdb Binary files /dev/null and b/mitigating_bias/train/BERTScore/__pycache__/bertscore_utils.cpython-39.pyc differ diff --git a/mitigating_bias/train/BERTScore/__pycache__/dataloader.cpython-39.pyc b/mitigating_bias/train/BERTScore/__pycache__/dataloader.cpython-39.pyc new file mode 100644 index 0000000..6a5cf98 Binary files /dev/null and b/mitigating_bias/train/BERTScore/__pycache__/dataloader.cpython-39.pyc differ diff --git a/mitigating_bias/train/BERTScore/adapter/adapter_config.json b/mitigating_bias/train/BERTScore/adapter/adapter_config.json new file mode 100644 index 0000000..7ad4d96 --- /dev/null +++ b/mitigating_bias/train/BERTScore/adapter/adapter_config.json @@ -0,0 +1,40 @@ +{ + "config": { + "adapter_residual_before_ln": false, + "cross_adapter": false, + "factorized_phm_W": true, + "factorized_phm_rule": false, + "hypercomplex_nonlinearity": "glorot-uniform", + "init_weights": "bert", + "inv_adapter": null, + "inv_adapter_reduction_factor": null, + "is_parallel": false, + "learn_phm": true, + "leave_out": [], + "ln_after": false, + "ln_before": false, + "mh_adapter": false, + "non_linearity": "relu", + "original_ln_after": true, + "original_ln_before": true, + "output_adapter": true, + "phm_bias": true, + "phm_c_init": "normal", + "phm_dim": 4, + "phm_init_range": 0.0001, + "phm_layer": false, + "phm_rank": 1, + "reduction_factor": 16, + "residual_before_ln": true, + "scaling": 1.0, + "shared_W_phm": false, + "shared_phm_rule": true, + "use_gating": false + }, + "hidden_size": 1024, + "model_class": "BertAdapterModel", + "model_name": "bert-large-uncased", + "model_type": "bert", + "name": "bert-large-uncaseddebiased-bertscore", + "version": "3.1.0" +} \ No newline at end of file diff --git a/mitigating_bias/train/BERTScore/adapter/pytorch_adapter.bin b/mitigating_bias/train/BERTScore/adapter/pytorch_adapter.bin new file mode 100644 index 0000000..c5e676c Binary files /dev/null and b/mitigating_bias/train/BERTScore/adapter/pytorch_adapter.bin differ diff --git a/mitigating_bias/train/BERTScore/bert_score/.gitignore b/mitigating_bias/train/BERTScore/bert_score/.gitignore new file mode 100644 index 0000000..4d2dd1f --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/.gitignore @@ -0,0 +1,107 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +# vscode +.vscode \ No newline at end of file diff --git a/mitigating_bias/train/BERTScore/bert_score/.travis.yml b/mitigating_bias/train/BERTScore/bert_score/.travis.yml new file mode 100644 index 0000000..d1ba185 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/.travis.yml @@ -0,0 +1,9 @@ +env: + TOKENIZERS_PARALLELISM=false # parallelized fast tokenizer don't fit into Travis CI VM +language: python +python: + - '3.6' + - '3.7' +install: + pip install . +script: travis_wait 30 python -m unittest discover diff --git a/mitigating_bias/train/BERTScore/bert_score/LICENSE b/mitigating_bias/train/BERTScore/bert_score/LICENSE new file mode 100644 index 0000000..f8afd41 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Tianyi Zhang, Varsha Kishore, Felix Wu, Kilian Q. Weinberger, and Yoav Artzi. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/mitigating_bias/train/BERTScore/bert_score/MANIFEST.in b/mitigating_bias/train/BERTScore/bert_score/MANIFEST.in new file mode 100644 index 0000000..a2136ae --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/MANIFEST.in @@ -0,0 +1 @@ +recursive-include bert_score/rescale_baseline * diff --git a/mitigating_bias/train/BERTScore/bert_score/README.md b/mitigating_bias/train/BERTScore/bert_score/README.md new file mode 100644 index 0000000..0c5cf7f --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/README.md @@ -0,0 +1,230 @@ +# BERTScore +[![made-with-python](https://img.shields.io/badge/Made%20with-Python-red.svg)](#python) +[![arxiv](https://img.shields.io/badge/arXiv-1904.09675-b31b1b.svg)](https://arxiv.org/abs/1904.09675) +[![PyPI version bert-score](https://badge.fury.io/py/bert-score.svg)](https://pypi.python.org/pypi/bert-score/) [![Downloads](https://pepy.tech/badge/bert-score)](https://pepy.tech/project/bert-score) [![Downloads](https://pepy.tech/badge/bert-score/month)](https://pepy.tech/project/bert-score) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) + + +Automatic Evaluation Metric described in the paper [BERTScore: Evaluating Text Generation with BERT](https://arxiv.org/abs/1904.09675) (ICLR 2020). We now support about 130 models (see this [spreadsheet](https://docs.google.com/spreadsheets/d/1RKOVpselB98Nnh_EOC4A2BYn8_201tmPODpNWu4w7xI/edit?usp=sharing) for their correlations with human evaluation). Currently, the best model is `microsoft/deberta-xlarge-mnli`, please consider using it instead of the default `roberta-large` in order to have the best correlation with human evaluation. + +#### News: + +- Updated to version 0.3.11 + - Support 6 DeBERTa v3 models + - Support 3 ByT5 models +- Updated to version 0.3.10 + - Support 8 SimCSE models + - Fix the support of scibert (to be compatible with transformers >= 4.0.0) + - Add scripts for reproducing some results in our paper (See this [folder](./reproduce)) + - Support fast tokenizers in huggingface transformers with `--use_fast_tokenizer`. Notably, you will get different scores because of the difference in the tokenizer implementations ([#106](https://github.com/Tiiiger/bert_score/issues/106)). + - Fix non-zero recall problem for empty candidate strings ([#107](https://github.com/Tiiiger/bert_score/issues/107)). + - Add Turkish BERT Supoort ([#108](https://github.com/Tiiiger/bert_score/issues/108)). +- Updated to version 0.3.9 + - Support 3 BigBird models + - Fix bugs for mBART and T5 + - Support 4 mT5 models as requested ([#93](https://github.com/Tiiiger/bert_score/issues/93)) +- Updated to version 0.3.8 + - Support 53 new pretrained models including BART, mBART, BORT, DeBERTa, T5, BERTweet, MPNet, ConvBERT, SqueezeBERT, SpanBERT, PEGASUS, Longformer, LED, Blendbot, etc. Among them, DeBERTa achives higher correlation with human scores than RoBERTa (our default) on WMT16 dataset. The correlations are presented in this [Google sheet](https://docs.google.com/spreadsheets/d/1RKOVpselB98Nnh_EOC4A2BYn8_201tmPODpNWu4w7xI/edit?usp=sharing). + - Please consider using `--model_type microsoft/deberta-xlarge-mnli` or `--model_type microsoft/deberta-large-mnli` (faster) if you want the scores to correlate better with human scores. + - Add baseline files for DeBERTa models. + - Add example code to generate baseline files (please see the [details](get_rescale_baseline)). +- Updated to version 0.3.7 + - Being compatible with Huggingface's transformers version >=4.0.0. Thanks to public contributers ([#84](https://github.com/Tiiiger/bert_score/pull/84), [#85](https://github.com/Tiiiger/bert_score/issues/85), [#86](https://github.com/Tiiiger/bert_score/pull/86)). +- See [#22](https://github.com/Tiiiger/bert_score/issues/22) if you want to replicate our experiments on the COCO Captioning dataset. + + +- For people in China, downloading pre-trained weights can be very slow. We provide copies of a few models on Baidu Pan. + - [roberta-large](https://pan.baidu.com/s/1MTmGHsZ3ubn7Vr_W-wyEdQ) password: dhe5 + - [bert-base-chinese](https://pan.baidu.com/s/1THfiCXjWtdGGsCMskQ5svA) password: jvk7 + - [bert-base-multilingual-cased](https://pan.baidu.com/s/100SBjkLmI7U4pgo_e0q7CQ) password: yx3q +- [Huggingface's datasets](https://github.com/huggingface/datasets) library includes BERTScore in their metric collection. + +
Previous updates

+ +- Updated to version 0.3.6 + - Support custom baseline files [#74](https://github.com/Tiiiger/bert_score/pull/74) + - The option `--rescale-with-baseline` is changed to `--rescale_with_baseline` so that it is consistent with other options. +- Updated to version 0.3.5 + - Being compatible with Huggingface's transformers >=v3.0.0 and minor fixes ([#58](https://github.com/Tiiiger/bert_score/pull/58), [#66](https://github.com/Tiiiger/bert_score/pull/66), [#68](https://github.com/Tiiiger/bert_score/pull/68)) + - Several improvements related to efficency ([#67](https://github.com/Tiiiger/bert_score/pull/67), [#69](https://github.com/Tiiiger/bert_score/pull/69)) +- Updated to version 0.3.4 + - Compatible with transformers v2.11.0 now (#58) +- Updated to version 0.3.3 + - Fixing the bug with empty strings [issue #47](https://github.com/Tiiiger/bert_score/issues/47). + - Supporting 6 [ELECTRA](https://github.com/google-research/electra) models and 24 smaller [BERT](https://github.com/google-research/bert) models. + - A new [Google sheet](https://docs.google.com/spreadsheets/d/1RKOVpselB98Nnh_EOC4A2BYn8_201tmPODpNWu4w7xI/edit?usp=sharing) for keeping the performance (i.e., pearson correlation with human judgment) of different models on WMT16 to-English. + - Including the script for tuning the best number of layers of an English pre-trained model on WMT16 to-English data (See the [details](tune_layers)). +- Updated to version 0.3.2 + - **Bug fixed**: fixing the bug in v0.3.1 when having multiple reference sentences. + - Supporting multiple reference sentences with our command line tool. +- Updated to version 0.3.1 + - A new `BERTScorer` object that caches the model to avoid re-loading it multiple times. Please see our [jupyter notebook example](./example/Demo.ipynb) for the usage. + - Supporting multiple reference sentences for each example. The `score` function now can take a list of lists of strings as the references and return the score between the candidate sentence and its closest reference sentence. + +

+ +Please see [release logs](https://github.com/Tiiiger/bert_score/releases) for older updates. + +#### Authors: +* [Tianyi Zhang](https://scholar.google.com/citations?user=OI0HSa0AAAAJ&hl=en)* +* [Varsha Kishore](https://scholar.google.com/citations?user=B8UeYcEAAAAJ&authuser=2)* +* [Felix Wu](https://sites.google.com/view/felixwu/home)* +* [Kilian Q. Weinberger](http://kilian.cs.cornell.edu/index.html) +* [Yoav Artzi](https://yoavartzi.com/) + +*: Equal Contribution + +### Overview +BERTScore leverages the pre-trained contextual embeddings from BERT and matches +words in candidate and reference sentences by cosine similarity. +It has been shown to correlate with human judgment on sentence-level and +system-level evaluation. +Moreover, BERTScore computes precision, recall, and F1 measure, which can be +useful for evaluating different language generation tasks. + +For an illustration, BERTScore recall can be computed as +![](./bert_score.png "BERTScore") + +If you find this repo useful, please cite: +``` +@inproceedings{bert-score, + title={BERTScore: Evaluating Text Generation with BERT}, + author={Tianyi Zhang* and Varsha Kishore* and Felix Wu* and Kilian Q. Weinberger and Yoav Artzi}, + booktitle={International Conference on Learning Representations}, + year={2020}, + url={https://openreview.net/forum?id=SkeHuCVFDr} +} +``` + +### Installation +* Python version >= 3.6 +* PyTorch version >= 1.0.0 + +Install from pypi with pip by + +```sh +pip install bert-score +``` +Install latest unstable version from the master branch on Github by: +``` +pip install git+https://github.com/Tiiiger/bert_score +``` + +Install it from the source by: +```sh +git clone https://github.com/Tiiiger/bert_score +cd bert_score +pip install . +``` +and you may test your installation by: +``` +python -m unittest discover +``` + +### Usage + + +#### Python Function + +On a high level, we provide a python function `bert_score.score` and a python object `bert_score.BERTScorer`. +The function provides all the supported features while the scorer object caches the BERT model to faciliate multiple evaluations. +Check our [demo](./example/Demo.ipynb) to see how to use these two interfaces. +Please refer to [`bert_score/score.py`](./bert_score/score.py) for implementation details. + +Running BERTScore can be computationally intensive (because it uses BERT :p). +Therefore, a GPU is usually necessary. If you don't have access to a GPU, you +can try our [demo on Google Colab](https://colab.research.google.com/drive/1kpL8Y_AnUUiCxFjhxSrxCsc6-sDMNb_Q) + +#### Command Line Interface (CLI) +We provide a command line interface (CLI) of BERTScore as well as a python module. +For the CLI, you can use it as follows: +1. To evaluate English text files: + +We provide example inputs under `./example`. + +```sh +bert-score -r example/refs.txt -c example/hyps.txt --lang en +``` +You will get the following output at the end: + +roberta-large_L17_no-idf_version=0.3.0(hug_trans=2.3.0) P: 0.957378 R: 0.961325 F1: 0.959333 + +where "roberta-large_L17_no-idf_version=0.3.0(hug_trans=2.3.0)" is the hash code. + +Starting from version 0.3.0, we support rescaling the scores with baseline scores + +```sh +bert-score -r example/refs.txt -c example/hyps.txt --lang en --rescale_with_baseline +``` +You will get: + +roberta-large_L17_no-idf_version=0.3.0(hug_trans=2.3.0)-rescaled P: 0.747044 R: 0.770484 F1: 0.759045 + +This makes the range of the scores larger and more human-readable. Please see this [post](./journal/rescale_baseline.md) for details. + +When having multiple reference sentences, please use +```sh +bert-score -r example/refs.txt example/refs2.txt -c example/hyps.txt --lang en +``` +where the `-r` argument supports an arbitrary number of reference files. Each reference file should have the same number of lines as your candidate/hypothesis file. The i-th line in each reference file corresponds to the i-th line in the candidate file. + + +2. To evaluate text files in other languages: + +We currently support the 104 languages in multilingual BERT ([full list](https://github.com/google-research/bert/blob/master/multilingual.md#list-of-languages)). + +Please specify the two-letter abbreviation of the language. For instance, using `--lang zh` for Chinese text. + +See more options by `bert-score -h`. + + +3. To load your own custom model: +Please specify the path to the model and the number of layers to use by `--model` and `--num_layers`. +```sh +bert-score -r example/refs.txt -c example/hyps.txt --model path_to_my_bert --num_layers 9 +``` + + +4. To visualize matching scores: +```sh +bert-score-show --lang en -r "There are two bananas on the table." -c "On the table are two apples." -f out.png +``` +The figure will be saved to out.png. + + +#### Practical Tips + +* Report the hash code (e.g., `roberta-large_L17_no-idf_version=0.3.0(hug_trans=2.3.0)-rescaled`) in your paper so that people know what setting you use. This is inspired by [sacreBLEU](https://github.com/mjpost/sacreBLEU). Changes in huggingface's transformers version may also affect the score (See [issue #46](https://github.com/Tiiiger/bert_score/issues/46)). +* Unlike BERT, RoBERTa uses GPT2-style tokenizer which creates addition " " tokens when there are multiple spaces appearing together. It is recommended to remove addition spaces by `sent = re.sub(r' +', ' ', sent)` or `sent = re.sub(r'\s+', ' ', sent)`. +* Using inverse document frequency (idf) on the reference + sentences to weigh word importance may correlate better with human judgment. + However, when the set of reference sentences become too small, the idf score + would become inaccurate/invalid. + We now make it optional. To use idf, + please set `--idf` when using the CLI tool or + `idf=True` when calling `bert_score.score` function. +* When you are low on GPU memory, consider setting `batch_size` when calling + `bert_score.score` function. +* To use a particular model please set `-m MODEL_TYPE` when using the CLI tool + or `model_type=MODEL_TYPE` when calling `bert_score.score` function. +* We tune layer to use based on WMT16 metric evaluation dataset. You may use a + different layer by setting `-l LAYER` or `num_layers=LAYER`. To tune the best layer for your custom model, please follow the instructions in [tune_layers](tune_layers) folder. +* __Limitation__: Because BERT, RoBERTa, and XLM with learned positional embeddings are pre-trained on sentences with max length 512, BERTScore is undefined between sentences longer than 510 (512 after adding \[CLS\] and \[SEP\] tokens). The sentences longer than this will be truncated. Please consider using XLNet which can support much longer inputs. + +### Default Behavior + +#### Default Model +| Language | Model | +|:---------:|:--------------------------------:| +| en | roberta-large | +| en-sci | allenai/scibert_scivocab_uncased | +| zh | bert-base-chinese | +| tr | dbmdz/bert-base-turkish-cased | +| others | bert-base-multilingual-cased | + +#### Default Layers +Please see this [Google sheet](https://docs.google.com/spreadsheets/d/1RKOVpselB98Nnh_EOC4A2BYn8_201tmPODpNWu4w7xI/edit?usp=sharing) for the supported models and their performance. + +### Acknowledgement +This repo wouldn't be possible without the awesome +[bert](https://github.com/google-research/bert), [fairseq](https://github.com/pytorch/fairseq), and [transformers](https://github.com/huggingface/transformers). diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score.png b/mitigating_bias/train/BERTScore/bert_score/bert_score.png new file mode 100644 index 0000000..deb6b28 Binary files /dev/null and b/mitigating_bias/train/BERTScore/bert_score/bert_score.png differ diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/__init__.py b/mitigating_bias/train/BERTScore/bert_score/bert_score/__init__.py new file mode 100644 index 0000000..b4479d2 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/__init__.py @@ -0,0 +1,3 @@ +__version__ = "0.3.11" +from .score import * +from .scorer import * diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/cs/bert-base-multilingual-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/cs/bert-base-multilingual-cased.tsv new file mode 100644 index 0000000..1182dec --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/cs/bert-base-multilingual-cased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.28803304,0.28811806,0.28382972 +1,0.36045152,0.3605044,0.35791346 +2,0.35763955,0.3577387,0.35552806 +3,0.4382742,0.43832803,0.4371357 +4,0.49264902,0.4926875,0.49187797 +5,0.5753039,0.5753327,0.57483304 +6,0.63127446,0.6313224,0.6309864 +7,0.5324934,0.532565,0.53202814 +8,0.5102161,0.5103038,0.5096529 +9,0.6044539,0.6045382,0.604006 +10,0.6814313,0.68149376,0.6810876 +11,0.7187933,0.7188438,0.71841186 +12,0.386078,0.38613266,0.38548917 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/cs/xlm-mlm-100-1280.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/cs/xlm-mlm-100-1280.tsv new file mode 100644 index 0000000..e18490e --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/cs/xlm-mlm-100-1280.tsv @@ -0,0 +1,18 @@ +LAYER,P,R,F +0,0.24679352,0.24680473,0.24270211 +1,0.29235435,0.29231834,0.28975013 +2,0.3138872,0.31386852,0.31213808 +3,0.3285111,0.3284912,0.32616478 +4,0.34355187,0.34352767,0.3409594 +5,0.40920743,0.4091819,0.40708998 +6,0.5143928,0.5143628,0.51312447 +7,0.5684746,0.56843746,0.5675548 +8,0.55277854,0.55274475,0.55174726 +9,0.4946325,0.49455652,0.49314302 +10,0.425077,0.42500603,0.42305094 +11,0.37143245,0.37136525,0.3687799 +12,0.38431773,0.38426274,0.38162753 +13,0.40205154,0.40199956,0.3993145 +14,0.41208863,0.412054,0.40980735 +15,0.4243431,0.42427495,0.4220649 +16,0.32602695,0.3260445,0.32438898 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/cs/xlm-roberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/cs/xlm-roberta-base.tsv new file mode 100644 index 0000000..2bce6f5 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/cs/xlm-roberta-base.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.28832704,0.28834337,0.28409466 +1,0.42489076,0.42484972,0.42346135 +2,0.6489359,0.64890593,0.6484903 +3,0.7212477,0.7212302,0.7210182 +4,0.70944715,0.7094549,0.70922697 +5,0.7286318,0.72864425,0.7284186 +6,0.71929383,0.71930563,0.71912307 +7,0.75613487,0.756147,0.7559896 +8,0.7593519,0.759376,0.75920963 +9,0.801281,0.80129445,0.8010951 +10,0.8243164,0.82432646,0.8241175 +11,0.86058,0.86058563,0.8604526 +12,0.97968304,0.9796832,0.9796791 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/cs/xlm-roberta-large.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/cs/xlm-roberta-large.tsv new file mode 100644 index 0000000..3345ec3 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/cs/xlm-roberta-large.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.36036962,0.3603732,0.35725367 +1,0.6612272,0.661179,0.66074145 +2,0.722742,0.72273415,0.72256047 +3,0.73125947,0.73123205,0.7310358 +4,0.7825561,0.7825642,0.78245354 +5,0.78133506,0.7813208,0.7811937 +6,0.8079803,0.8079664,0.8078874 +7,0.8139315,0.8139195,0.8138673 +8,0.82575524,0.82575536,0.8256901 +9,0.8267652,0.8267674,0.8267081 +10,0.826633,0.826636,0.82654697 +11,0.8310137,0.8310095,0.83087397 +12,0.8320955,0.83211106,0.83181846 +13,0.82811135,0.8281364,0.827703 +14,0.8271892,0.8272189,0.8265785 +15,0.8306057,0.8306258,0.82997155 +16,0.81801736,0.81803435,0.8175852 +17,0.8253589,0.825372,0.8250096 +18,0.82938665,0.82940817,0.8290164 +19,0.82824516,0.8282779,0.827922 +20,0.8445639,0.84459394,0.84429437 +21,0.86360985,0.8636378,0.86333483 +22,0.8661244,0.8661579,0.86584014 +23,0.8638866,0.86392677,0.8635829 +24,0.97858095,0.9785705,0.9785698 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/de/bert-base-multilingual-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/de/bert-base-multilingual-cased.tsv new file mode 100644 index 0000000..825803e --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/de/bert-base-multilingual-cased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.29239914,0.29233938,0.28799337 +1,0.37400073,0.37395933,0.37138724 +2,0.36879358,0.36874846,0.3663888 +3,0.4502482,0.4501956,0.44887444 +4,0.4982386,0.49817833,0.49722672 +5,0.5760319,0.5759751,0.5754043 +6,0.62940514,0.62935334,0.6289917 +7,0.5357095,0.53565013,0.53505087 +8,0.5146575,0.51462156,0.5138855 +9,0.61532813,0.61528224,0.6147353 +10,0.68632543,0.6862504,0.6858456 +11,0.7214881,0.7214059,0.72098553 +12,0.36572546,0.36572027,0.36501065 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/de/xlm-mlm-100-1280.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/de/xlm-mlm-100-1280.tsv new file mode 100644 index 0000000..6f4d8ff --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/de/xlm-mlm-100-1280.tsv @@ -0,0 +1,18 @@ +LAYER,P,R,F +0,0.25753325,0.25744554,0.25318053 +1,0.2981514,0.2980718,0.2952621 +2,0.3208413,0.32078207,0.3187413 +3,0.33565432,0.33562624,0.33315146 +4,0.34684345,0.34679237,0.3443796 +5,0.4133209,0.41324788,0.41142154 +6,0.514071,0.51400465,0.51292115 +7,0.5642201,0.56416416,0.56339765 +8,0.54623514,0.5461879,0.54531705 +9,0.49143773,0.4913597,0.4903938 +10,0.42275012,0.42266262,0.42136824 +11,0.36494458,0.36484274,0.36310795 +12,0.37404448,0.37393928,0.37217715 +13,0.38868552,0.3885813,0.38668826 +14,0.39440155,0.39433125,0.39241815 +15,0.4055417,0.40547967,0.4035052 +16,0.30379978,0.30370486,0.30213118 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/de/xlm-roberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/de/xlm-roberta-base.tsv new file mode 100644 index 0000000..5aabf1c --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/de/xlm-roberta-base.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.30777588,0.30777684,0.3031559 +1,0.44505233,0.44509125,0.4434747 +2,0.66170436,0.66174895,0.6612669 +3,0.73550326,0.7355261,0.735256 +4,0.7208496,0.72085893,0.720586 +5,0.73704386,0.73705214,0.7367808 +6,0.73208153,0.7320707,0.7318679 +7,0.7680251,0.76800215,0.76783967 +8,0.77268696,0.77266395,0.7724989 +9,0.8099519,0.80989397,0.809723 +10,0.8310105,0.83095115,0.83080244 +11,0.86770487,0.86765665,0.86756754 +12,0.9819623,0.9819598,0.9819579 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/de/xlm-roberta-large.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/de/xlm-roberta-large.tsv new file mode 100644 index 0000000..f9f7028 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/de/xlm-roberta-large.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.37937975,0.379358,0.37601414 +1,0.6650208,0.66500705,0.6645409 +2,0.72824335,0.7282381,0.72805566 +3,0.74166065,0.7416417,0.741436 +4,0.7924967,0.7925062,0.7923915 +5,0.7885143,0.7884954,0.7883624 +6,0.8117979,0.8117669,0.81168765 +7,0.8173677,0.8173395,0.81728506 +8,0.82804793,0.828012,0.82794595 +9,0.83066076,0.8306335,0.83057094 +10,0.82999426,0.8299607,0.82988906 +11,0.83342683,0.83340013,0.8332831 +12,0.83806795,0.83803594,0.83778083 +13,0.83596325,0.83591455,0.83558387 +14,0.8378458,0.8377797,0.83741814 +15,0.8420356,0.84196484,0.84161186 +16,0.83186066,0.8318187,0.8314605 +17,0.83927697,0.83923465,0.83889884 +18,0.84405965,0.84401745,0.8436563 +19,0.8409746,0.8409399,0.84059715 +20,0.8542512,0.85422283,0.8539368 +21,0.8734287,0.8733914,0.87314016 +22,0.8774618,0.87741566,0.87717056 +23,0.87821764,0.8781659,0.8779116 +24,0.9817083,0.98170334,0.9817008 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en-sci/allenai/scibert_scivocab_uncased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en-sci/allenai/scibert_scivocab_uncased.tsv new file mode 100644 index 0000000..e050cbb --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en-sci/allenai/scibert_scivocab_uncased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.3247314,0.32477322,0.32055983 +1,0.34701017,0.34706187,0.344079 +2,0.41985375,0.41988486,0.4179418 +3,0.4668236,0.46684003,0.4656058 +4,0.45860615,0.4586492,0.4573681 +5,0.41228917,0.4123522,0.41066456 +6,0.4395095,0.43956795,0.43794444 +7,0.48392966,0.4839865,0.48246792 +8,0.5335945,0.5336341,0.5322364 +9,0.60744065,0.6074917,0.60612226 +10,0.66027635,0.66033924,0.65897125 +11,0.6890247,0.6891011,0.6878515 +12,0.54997945,0.55007255,0.54844016 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-base-v1.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-base-v1.tsv new file mode 100644 index 0000000..5c2e20f --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-base-v1.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.42279568,0.42285842,0.4198645 +1,0.38239375,0.3824535,0.3795375 +2,0.35127786,0.35131463,0.34854048 +3,0.3402314,0.34027407,0.33761653 +4,0.34001094,0.3400646,0.33745667 +5,0.34310105,0.34314916,0.34054983 +6,0.3478834,0.34792796,0.34530792 +7,0.3523316,0.35237584,0.34973368 +8,0.35546654,0.35550496,0.35283387 +9,0.35682797,0.35686156,0.3541417 +10,0.3572713,0.35730729,0.35451323 +11,0.35916516,0.35920846,0.35632935 +12,0.3620535,0.3621047,0.35911387 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-base-v2.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-base-v2.tsv new file mode 100644 index 0000000..769e8ce --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-base-v2.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.43284354,0.4329465,0.42670736 +1,0.4085349,0.40857056,0.4041539 +2,0.42302486,0.42304876,0.41986418 +3,0.43835327,0.43837532,0.43578437 +4,0.46398157,0.4640153,0.46179092 +5,0.487097,0.48714137,0.48507443 +6,0.50701046,0.5070602,0.50516284 +7,0.5251579,0.5252073,0.52346826 +8,0.5432063,0.5432638,0.5416856 +9,0.56169736,0.56174135,0.56031275 +10,0.58207834,0.58211654,0.58080167 +11,0.5087994,0.5088567,0.50630754 +12,0.4822224,0.48224902,0.4795803 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-large-v1.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-large-v1.tsv new file mode 100644 index 0000000..d7356d8 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-large-v1.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.48447838,0.48450485,0.4821886 +1,0.5124409,0.51243365,0.5109167 +2,0.49396634,0.49394318,0.49285302 +3,0.48355308,0.48351732,0.48258644 +4,0.48206407,0.48202685,0.4811013 +5,0.48171225,0.48167655,0.48073986 +6,0.48402956,0.48400134,0.48304388 +7,0.48760605,0.48758495,0.4866279 +8,0.49034056,0.4903293,0.4893756 +9,0.4919946,0.49199188,0.4910255 +10,0.49351045,0.4935107,0.49251547 +11,0.4953505,0.49535286,0.4943231 +12,0.49792922,0.4979353,0.49686712 +13,0.50119936,0.5012099,0.5001017 +14,0.50464475,0.50465906,0.5035164 +15,0.5072171,0.50723296,0.5060587 +16,0.50804037,0.50805837,0.506836 +17,0.50674427,0.5067624,0.5054734 +18,0.5028615,0.5028785,0.50150096 +19,0.4957624,0.49577576,0.49427336 +20,0.48470628,0.48471764,0.48304176 +21,0.46942177,0.4694329,0.46755382 +22,0.45182654,0.45184082,0.44979697 +23,0.4372368,0.43725976,0.43516964 +24,0.43032366,0.4303518,0.42831102 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-large-v2.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-large-v2.tsv new file mode 100644 index 0000000..bdc49f1 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-large-v2.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.43137488,0.4314412,0.4271023 +1,0.47189355,0.47192886,0.46977237 +2,0.4965904,0.49659666,0.49521467 +3,0.4952368,0.4952206,0.49390256 +4,0.49991024,0.4998804,0.49865857 +5,0.5061125,0.5060827,0.50490576 +6,0.52520007,0.5251885,0.5241151 +7,0.5463337,0.54633546,0.54536676 +8,0.56268036,0.56267744,0.5618048 +9,0.5788636,0.5788671,0.5780607 +10,0.59798187,0.5979915,0.5972454 +11,0.6093569,0.6093737,0.60867995 +12,0.61832786,0.6183305,0.6176837 +13,0.6298888,0.62988657,0.6292773 +14,0.63760334,0.6376027,0.6370052 +15,0.6402277,0.6402217,0.63963217 +16,0.6457506,0.6457368,0.64517874 +17,0.6488497,0.6488231,0.6482803 +18,0.6473536,0.6473276,0.6467711 +19,0.65181977,0.6517948,0.6512418 +20,0.65941834,0.6593918,0.65884435 +21,0.65883756,0.65882397,0.65822756 +22,0.6599824,0.6599794,0.6593097 +23,0.6140344,0.6140205,0.6131047 +24,0.54314095,0.54311645,0.5419062 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-xlarge-v1.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-xlarge-v1.tsv new file mode 100644 index 0000000..764576b --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-xlarge-v1.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.37603918,0.37612942,0.37049496 +1,0.31145602,0.3114958,0.3073803 +2,0.25227228,0.2522994,0.24795091 +3,0.22015819,0.22017719,0.21600199 +4,0.21572605,0.21576598,0.21187688 +5,0.21390381,0.21393314,0.21024637 +6,0.21366087,0.21368802,0.21022928 +7,0.2149553,0.21497151,0.2116843 +8,0.21902423,0.21904334,0.215865 +9,0.22598784,0.22601976,0.22294162 +10,0.23651579,0.23656204,0.2335378 +11,0.2508,0.25083283,0.24782418 +12,0.26735264,0.26740175,0.2642045 +13,0.2851571,0.2852036,0.28140694 +14,0.30159834,0.3016559,0.2969648 +15,0.31582344,0.31589058,0.31032172 +16,0.33028397,0.3303347,0.32389277 +17,0.34479943,0.34483773,0.33757344 +18,0.3576801,0.35770583,0.34980485 +19,0.36997133,0.36996147,0.3615338 +20,0.3813416,0.38132015,0.37257645 +21,0.3904368,0.39041746,0.38146585 +22,0.4026223,0.40261322,0.39356884 +23,0.41755676,0.41755086,0.4090774 +24,0.40913486,0.40914643,0.40243107 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-xlarge-v2.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-xlarge-v2.tsv new file mode 100644 index 0000000..87ac788 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-xlarge-v2.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.379094,0.37919718,0.37330297 +1,0.27352002,0.27357075,0.26852632 +2,0.24191533,0.24194317,0.23669504 +3,0.2238661,0.22388461,0.21928357 +4,0.22812894,0.22815062,0.22410771 +5,0.22398795,0.22402358,0.22023973 +6,0.22606015,0.22609216,0.22241953 +7,0.22955626,0.22957715,0.2261971 +8,0.23346025,0.23349406,0.230283 +9,0.23933677,0.23937275,0.23639005 +10,0.24947925,0.2495169,0.24674372 +11,0.25879192,0.25879982,0.25623834 +12,0.26840612,0.2684224,0.2659429 +13,0.28223696,0.2822432,0.27990422 +14,0.3007411,0.30081397,0.298456 +15,0.32065493,0.32073346,0.31820792 +16,0.3489667,0.34909493,0.34612358 +17,0.37499505,0.37513632,0.37153322 +18,0.39365283,0.3937659,0.3894278 +19,0.3985198,0.39858896,0.39375183 +20,0.40377426,0.4038127,0.3987301 +21,0.4162669,0.41631454,0.41127917 +22,0.4385093,0.43853307,0.43359485 +23,0.50211877,0.5021498,0.49820283 +24,0.6450441,0.6450727,0.64176905 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-xxlarge-v1.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-xxlarge-v1.tsv new file mode 100644 index 0000000..324494f --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-xxlarge-v1.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.44518736,0.44525033,0.44190475 +1,0.26892486,0.26893654,0.26619813 +2,0.25225964,0.25227055,0.2495048 +3,0.23626596,0.23626427,0.23414151 +4,0.24108262,0.24108647,0.23914734 +5,0.2402725,0.24029303,0.23852193 +6,0.24204335,0.24206877,0.24038398 +7,0.24432875,0.24436904,0.2427339 +8,0.24470611,0.24472676,0.24312295 +9,0.24761276,0.24763304,0.2458257 +10,0.26654655,0.26657295,0.26450548 +11,0.30993807,0.309992,0.3073111 +12,0.46560258,0.46563277,0.463768 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-xxlarge-v2.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-xxlarge-v2.tsv new file mode 100644 index 0000000..f682d2c --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/albert-xxlarge-v2.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.4414845,0.4415628,0.4378333 +1,0.26729813,0.26729846,0.26443842 +2,0.25006709,0.25006858,0.2470538 +3,0.22912578,0.22914563,0.22677879 +4,0.23676835,0.23678702,0.23474906 +5,0.23712093,0.23712862,0.23520498 +6,0.2357785,0.23579709,0.2339876 +7,0.2375271,0.2375658,0.2357691 +8,0.23694733,0.2369875,0.23519956 +9,0.24043696,0.24048997,0.23847668 +10,0.25991938,0.25997588,0.257621 +11,0.3076668,0.30775174,0.30460533 +12,0.5213576,0.52133,0.5192018 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/bert-base-cased-finetuned-mrpc.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/bert-base-cased-finetuned-mrpc.tsv new file mode 100644 index 0000000..d001fc1 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/bert-base-cased-finetuned-mrpc.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.32524315,0.32527947,0.32047534 +1,0.3697738,0.3697855,0.36682808 +2,0.3912412,0.39124438,0.38884974 +3,0.38678017,0.3867508,0.3849363 +4,0.4306143,0.43059555,0.4291982 +5,0.47680253,0.47676748,0.4757307 +6,0.4937383,0.4937078,0.49275663 +7,0.47395828,0.47392154,0.47275484 +8,0.48822877,0.48818707,0.48712534 +9,0.55345184,0.55342007,0.5525519 +10,0.6535154,0.6534775,0.6529064 +11,0.76415604,0.7641147,0.76378924 +12,0.72067815,0.7206308,0.72023565 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/bert-base-multilingual-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/bert-base-multilingual-cased.tsv new file mode 100644 index 0000000..59dc19e --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/bert-base-multilingual-cased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.31651747,0.3166142,0.31180394 +1,0.38737702,0.38744056,0.38455048 +2,0.37912813,0.37916443,0.37648088 +3,0.46451283,0.46451145,0.46312103 +4,0.5066057,0.50659287,0.5054953 +5,0.5804824,0.5804496,0.5797646 +6,0.63067275,0.630636,0.63018715 +7,0.54218787,0.5421653,0.5414328 +8,0.5240471,0.5240057,0.5232123 +9,0.6320527,0.6320019,0.63146895 +10,0.69633687,0.6962761,0.6958725 +11,0.7193143,0.7192363,0.7188216 +12,0.3473233,0.34732684,0.34655094 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/bert-base-uncased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/bert-base-uncased.tsv new file mode 100644 index 0000000..4cd085d --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/bert-base-uncased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.3231512,0.32322776,0.31853873 +1,0.32517454,0.32522815,0.32197207 +2,0.3708038,0.37080705,0.36834884 +3,0.36287847,0.36286885,0.36059204 +4,0.3786389,0.37860426,0.3767926 +5,0.4018232,0.401791,0.40032896 +6,0.38439456,0.38434005,0.38282546 +7,0.37114623,0.3710986,0.36949417 +8,0.37231025,0.37226102,0.37049443 +9,0.35375935,0.3537393,0.35219112 +10,0.38161838,0.3816211,0.37991408 +11,0.4421448,0.4421776,0.44040316 +12,0.40192786,0.40191513,0.40038353 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/bert-large-uncased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/bert-large-uncased.tsv new file mode 100644 index 0000000..39118de --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/bert-large-uncased.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.33945993,0.33952734,0.3353803 +1,0.46529758,0.46534532,0.4629573 +2,0.5190359,0.51904607,0.5170987 +3,0.55551875,0.5555247,0.5540426 +4,0.47806495,0.4780755,0.47663376 +5,0.39333034,0.3933407,0.391598 +6,0.30678865,0.30683848,0.30446944 +7,0.40164435,0.40167126,0.39997557 +8,0.44429466,0.4443099,0.44277325 +9,0.5114804,0.5114661,0.5102474 +10,0.53322667,0.5332073,0.5323144 +11,0.56793964,0.56791747,0.56725395 +12,0.56360143,0.5635814,0.5629889 +13,0.5358492,0.5358346,0.53522795 +14,0.42079058,0.42078197,0.41975206 +15,0.3509417,0.3509411,0.34957188 +16,0.4534342,0.45341223,0.45231807 +17,0.46370843,0.46370083,0.46265444 +18,0.4278576,0.42786714,0.42646673 +19,0.38974905,0.3897353,0.3877319 +20,0.3966205,0.3966191,0.3942883 +21,0.4981153,0.49813268,0.4955151 +22,0.5868029,0.58685154,0.584482 +23,0.7136535,0.7137033,0.7118858 +24,0.5152624,0.5152391,0.5146088 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/distilbert-base-multilingual-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/distilbert-base-multilingual-cased.tsv new file mode 100644 index 0000000..d28c58d --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/distilbert-base-multilingual-cased.tsv @@ -0,0 +1,8 @@ +LAYER,P,R,F +0,0.27245584,0.27247205,0.26611173 +1,0.45394143,0.453942,0.45178676 +2,0.5374658,0.5374726,0.53619426 +3,0.61241305,0.61244136,0.6116679 +4,0.63282156,0.632836,0.63219804 +5,0.8164157,0.81645757,0.81623197 +6,0.4648941,0.4649093,0.4638737 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/distilbert-base-uncased-distilled-squad.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/distilbert-base-uncased-distilled-squad.tsv new file mode 100644 index 0000000..66e8168 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/distilbert-base-uncased-distilled-squad.tsv @@ -0,0 +1,8 @@ +LAYER,P,R,F +0,0.28725642,0.2872663,0.28207442 +1,0.37234208,0.37233955,0.37046063 +2,0.403689,0.4037149,0.4020736 +3,0.5399291,0.53997463,0.53930676 +4,0.6591859,0.65919137,0.65882134 +5,0.65313077,0.6531313,0.65279835 +6,0.74920315,0.7491901,0.7487158 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/distilbert-base-uncased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/distilbert-base-uncased.tsv new file mode 100644 index 0000000..b6f66db --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/distilbert-base-uncased.tsv @@ -0,0 +1,8 @@ +LAYER,P,R,F +0,0.2884445,0.2884457,0.28333962 +1,0.39316687,0.3931663,0.39123002 +2,0.42905498,0.4290923,0.42735597 +3,0.5222444,0.52227175,0.52129734 +4,0.6019937,0.6019904,0.6014007 +5,0.6666034,0.66660464,0.66620487 +6,0.51401854,0.51404256,0.5131456 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/distilroberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/distilroberta-base.tsv new file mode 100644 index 0000000..4213b57 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/distilroberta-base.tsv @@ -0,0 +1,8 @@ +LAYER,P,R,F +0,0.42608285,0.4272089,0.42462298 +1,0.7367886,0.7370362,0.736573 +2,0.79922664,0.799593,0.7991632 +3,0.8329021,0.8333321,0.83291864 +4,0.8442,0.84462386,0.84425896 +5,0.84732,0.84759504,0.8473319 +6,0.89334005,0.8935088,0.8933471 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-base-mnli.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-base-mnli.tsv new file mode 100644 index 0000000..3e1d6e3 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-base-mnli.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.24991891,0.25001466,0.24200068 +1,0.29392833,0.29395026,0.28912014 +2,0.36113718,0.36123025,0.3575888 +3,0.41445282,0.41459718,0.41148487 +4,0.4386812,0.43877414,0.4361292 +5,0.45521808,0.4552972,0.45306677 +6,0.4797258,0.4797979,0.47779492 +7,0.48204568,0.48210686,0.480253 +8,0.50440174,0.5044583,0.5025705 +9,0.53045946,0.5304829,0.52866036 +10,0.53781724,0.5377958,0.53583634 +11,0.5402823,0.5402229,0.53816986 +12,0.57382584,0.57370174,0.57160807 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-base.tsv new file mode 100644 index 0000000..70ab5c4 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-base.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.2517391,0.2518335,0.24388544 +1,0.36171424,0.36175922,0.35748047 +2,0.4423475,0.442458,0.44021225 +3,0.50618786,0.5063445,0.5045984 +4,0.5250692,0.525192,0.5236118 +5,0.55415064,0.5542385,0.5528668 +6,0.5684745,0.5685567,0.5672051 +7,0.5721026,0.5721756,0.5708452 +8,0.60626274,0.6063245,0.6049902 +9,0.6282066,0.62825406,0.6269483 +10,0.6643668,0.66438687,0.66297233 +11,0.65951246,0.6595324,0.6584084 +12,0.70749044,0.70750576,0.7064498 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-large-mnli.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-large-mnli.tsv new file mode 100644 index 0000000..d1df4db --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-large-mnli.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.24490805,0.24501415,0.23715581 +1,0.29400384,0.2940948,0.28872925 +2,0.30570883,0.3057956,0.30113816 +3,0.2957167,0.29578057,0.2915654 +4,0.2884288,0.28847086,0.2843156 +5,0.30902475,0.3090854,0.3057 +6,0.3267471,0.32683545,0.32377866 +7,0.32664096,0.32672828,0.3239887 +8,0.33238792,0.3324875,0.32986364 +9,0.35454232,0.3546663,0.35220724 +10,0.37474304,0.37486178,0.3723941 +11,0.38948673,0.38959926,0.38713577 +12,0.40499082,0.4051212,0.4027381 +13,0.40869987,0.40882573,0.40650842 +14,0.41533,0.41543606,0.41318002 +15,0.42891178,0.4289993,0.42687863 +16,0.43574512,0.43581918,0.43376175 +17,0.44409868,0.44415665,0.4421444 +18,0.45358238,0.45362508,0.45173016 +19,0.4614291,0.46146432,0.45968512 +20,0.4612395,0.46127385,0.45946208 +21,0.47897574,0.47901914,0.4772938 +22,0.49526486,0.49531218,0.49363694 +23,0.48103315,0.4810869,0.4794539 +24,0.5131625,0.51319313,0.51193404 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-large.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-large.tsv new file mode 100644 index 0000000..729ce3b --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-large.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.24543904,0.24554524,0.23771858 +1,0.32400694,0.3240889,0.31910792 +2,0.35317397,0.35325843,0.34890434 +3,0.34494445,0.34502625,0.34082443 +4,0.34670925,0.34677663,0.3425456 +5,0.36661133,0.3667012,0.36314553 +6,0.38046056,0.38056228,0.37710926 +7,0.38267714,0.3827855,0.37945607 +8,0.3922755,0.3924098,0.38914645 +9,0.41027483,0.41045374,0.4072962 +10,0.43634042,0.4365225,0.43331632 +11,0.4587171,0.45889324,0.45575032 +12,0.47399956,0.47417867,0.47109136 +13,0.48888516,0.48905894,0.4862424 +14,0.4966528,0.49680543,0.49413764 +15,0.5117451,0.51189446,0.50938886 +16,0.5341927,0.53433174,0.53205305 +17,0.55080074,0.5509329,0.5488182 +18,0.5715738,0.571711,0.5698007 +19,0.58424556,0.5843769,0.5826535 +20,0.59171396,0.5918352,0.5901539 +21,0.60953987,0.60965025,0.60810995 +22,0.620468,0.6205763,0.6191674 +23,0.57499653,0.575068,0.573669 +24,0.5698042,0.5698687,0.5686779 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-xlarge-mnli.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-xlarge-mnli.tsv new file mode 100644 index 0000000..f52abba --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-xlarge-mnli.tsv @@ -0,0 +1,50 @@ +LAYER,P,R,F +0,0.2493579,0.24956034,0.24190253 +1,0.3013932,0.30158633,0.2964718 +2,0.317363,0.31756195,0.31315005 +3,0.3117229,0.3118849,0.30764845 +4,0.3074649,0.3076071,0.30345994 +5,0.3140126,0.31414607,0.31065413 +6,0.32410583,0.3242222,0.32100978 +7,0.32173893,0.3218549,0.3187024 +8,0.32544047,0.32556787,0.3224075 +9,0.344368,0.3445152,0.34142512 +10,0.3655007,0.36567506,0.3623955 +11,0.38081372,0.38100296,0.37764993 +12,0.38874978,0.38893828,0.38563213 +13,0.38537422,0.38555342,0.38225004 +14,0.39434314,0.39452493,0.3914539 +15,0.40501443,0.40519157,0.40221062 +16,0.41383415,0.414013,0.41118416 +17,0.43424043,0.4344097,0.4318083 +18,0.4456768,0.44583458,0.4435271 +19,0.4616012,0.46173084,0.45967415 +20,0.46671286,0.46683112,0.4647799 +21,0.49091575,0.49103191,0.4892095 +22,0.5345532,0.53466916,0.53317034 +23,0.52739257,0.5275056,0.52598923 +24,0.4812145,0.48132038,0.47937903 +25,0.47786388,0.47797868,0.4758911 +26,0.4767261,0.476854,0.4747504 +27,0.45120457,0.45133275,0.44898003 +28,0.43487516,0.43499732,0.43227148 +29,0.4418857,0.44200745,0.439456 +30,0.45188263,0.4520089,0.44948938 +31,0.44309646,0.443208,0.44067165 +32,0.44934252,0.44945362,0.44696212 +33,0.47058168,0.470693,0.46848273 +34,0.48300824,0.4831242,0.480923 +35,0.49022266,0.49034286,0.48815507 +36,0.49732342,0.49744752,0.49531126 +37,0.49466616,0.494789,0.49265566 +38,0.4995418,0.4996657,0.49754837 +39,0.5116362,0.5117548,0.50974 +40,0.5169066,0.5170288,0.5150192 +41,0.53604615,0.5361662,0.534255 +42,0.5560917,0.5562141,0.55443686 +43,0.5699871,0.5701181,0.56848437 +44,0.5755175,0.5756376,0.5740404 +45,0.5944691,0.59459156,0.59314805 +46,0.61108196,0.6111957,0.60986704 +47,0.5935245,0.59361994,0.5924131 +48,0.6343621,0.6344516,0.63365686 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-xlarge.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-xlarge.tsv new file mode 100644 index 0000000..053847a --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/microsoft/deberta-xlarge.tsv @@ -0,0 +1,50 @@ +LAYER,P,R,F +0,0.24957183,0.24977477,0.24214219 +1,0.30639872,0.3065908,0.30158743 +2,0.3331396,0.33333635,0.3290473 +3,0.32949522,0.32968733,0.3253696 +4,0.31661382,0.316769,0.31258678 +5,0.32896715,0.32910535,0.32568523 +6,0.33770096,0.33782086,0.3345446 +7,0.3326147,0.33272395,0.32957816 +8,0.3367821,0.33687654,0.33380622 +9,0.3546219,0.3547327,0.35179362 +10,0.38037142,0.38049275,0.37740862 +11,0.40171945,0.40185076,0.39869636 +12,0.4163913,0.41652367,0.4133557 +13,0.43222922,0.43235204,0.42938623 +14,0.4416328,0.44175574,0.43894717 +15,0.45403007,0.45415205,0.45151842 +16,0.47758847,0.47770745,0.47528616 +17,0.49413732,0.49424222,0.49203014 +18,0.5177917,0.5178813,0.51596016 +19,0.54055035,0.54061955,0.53895485 +20,0.5554671,0.55553156,0.553943 +21,0.5871218,0.5871978,0.585844 +22,0.6379372,0.6380021,0.6369301 +23,0.62672323,0.6267863,0.6256873 +24,0.5497838,0.5498381,0.5483379 +25,0.543943,0.5440018,0.54246646 +26,0.55943567,0.55949783,0.5578509 +27,0.5522361,0.5523346,0.55041844 +28,0.5384432,0.53856134,0.53645724 +29,0.541011,0.5411351,0.53916043 +30,0.53560615,0.5357274,0.5337449 +31,0.5211553,0.5212751,0.51924247 +32,0.52553123,0.52564174,0.5235451 +33,0.53930295,0.5394204,0.5372786 +34,0.5591909,0.55931133,0.5570341 +35,0.5712996,0.5714208,0.5691194 +36,0.57959074,0.57972014,0.5774709 +37,0.58818644,0.5883232,0.58616716 +38,0.5925551,0.5926871,0.5905953 +39,0.6026835,0.60282564,0.6008043 +40,0.6189861,0.6191251,0.6172279 +41,0.62964463,0.62977934,0.62799156 +42,0.6451681,0.64530563,0.6436409 +43,0.6539978,0.65413773,0.65264153 +44,0.65711796,0.65726453,0.65580934 +45,0.66835105,0.66850114,0.6671609 +46,0.67004806,0.6701847,0.6689483 +47,0.611536,0.61166185,0.6104823 +48,0.6487418,0.64883584,0.6481099 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/roberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/roberta-base.tsv new file mode 100644 index 0000000..801f4a1 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/roberta-base.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.4043224,0.40432808,0.40218553 +1,0.6423126,0.6422804,0.6414617 +2,0.768273,0.7682535,0.76791227 +3,0.7803166,0.78030443,0.7800415 +4,0.7839782,0.78397924,0.7836174 +5,0.7959116,0.7959033,0.79557085 +6,0.80936664,0.80936354,0.80908644 +7,0.81720984,0.81721514,0.816965 +8,0.80465585,0.80464727,0.8043641 +9,0.7911581,0.79115206,0.7908595 +10,0.8146725,0.8146619,0.814463 +11,0.8243949,0.8244051,0.82420003 +12,0.8557132,0.85571885,0.8555707 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/roberta-large-mnli.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/roberta-large-mnli.tsv new file mode 100644 index 0000000..3c6d5ae --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/roberta-large-mnli.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.36816803,0.36820343,0.3650997 +1,0.6424572,0.64243424,0.6408211 +2,0.62199366,0.6219771,0.62105906 +3,0.65479594,0.65479946,0.6542115 +4,0.66220766,0.66219413,0.66147035 +5,0.6841878,0.6841976,0.6835943 +6,0.6993157,0.6993184,0.698729 +7,0.7363659,0.7363538,0.73597246 +8,0.76699406,0.76697797,0.7666572 +9,0.76385623,0.76387703,0.76359564 +10,0.7751121,0.7751162,0.7748585 +11,0.7607176,0.7607192,0.7604293 +12,0.75846714,0.75850517,0.7582122 +13,0.7660639,0.766093,0.7658386 +14,0.76723933,0.7672636,0.76692307 +15,0.76183504,0.7618548,0.7615043 +16,0.77503896,0.7750635,0.77476084 +17,0.7572284,0.75724494,0.7568846 +18,0.72981,0.72983533,0.7294623 +19,0.6901594,0.69018,0.6896288 +20,0.6456024,0.6456534,0.6447707 +21,0.6733705,0.6734108,0.672755 +22,0.7964235,0.79642963,0.7961781 +23,0.83942956,0.839427,0.8393037 +24,0.87867236,0.8787309,0.8781039 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/roberta-large.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/roberta-large.tsv new file mode 100644 index 0000000..86bc2e8 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/roberta-large.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.3712891,0.37132213,0.36826715 +1,0.67176163,0.6717439,0.6703483 +2,0.70031923,0.7003052,0.69969934 +3,0.7080897,0.7081011,0.707698 +4,0.6976306,0.69762677,0.69710517 +5,0.7187199,0.71873325,0.71828526 +6,0.74678195,0.74678224,0.74642223 +7,0.7772428,0.7772184,0.77691925 +8,0.8021733,0.8021747,0.8019093 +9,0.8067641,0.80678225,0.8065291 +10,0.8366976,0.8367098,0.8364913 +11,0.8163513,0.816369,0.8161064 +12,0.8175406,0.8175611,0.81728977 +13,0.82106245,0.8210674,0.82080233 +14,0.81487834,0.8148861,0.8145652 +15,0.8243552,0.8243522,0.8240494 +16,0.8341641,0.8341684,0.833912 +17,0.83150584,0.8314941,0.83122575 +18,0.8314624,0.83146274,0.8311686 +19,0.82761073,0.8276117,0.8273196 +20,0.799873,0.79988,0.79956234 +21,0.8082163,0.80819315,0.8079286 +22,0.83196104,0.83195347,0.83174026 +23,0.8408042,0.8408027,0.8405716 +24,0.96022236,0.96021587,0.960168 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlm-mlm-100-1280.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlm-mlm-100-1280.tsv new file mode 100644 index 0000000..f5e7601 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlm-mlm-100-1280.tsv @@ -0,0 +1,18 @@ +LAYER,P,R,F +0,0.2929519,0.29297927,0.28788087 +1,0.32307193,0.32305866,0.31955993 +2,0.33333376,0.33329934,0.3307059 +3,0.34018472,0.34019333,0.3369147 +4,0.35193846,0.35196185,0.34877294 +5,0.41633913,0.41635182,0.41389906 +6,0.52230054,0.5223191,0.5208747 +7,0.57117224,0.5711975,0.57016635 +8,0.55626523,0.55628437,0.55513597 +9,0.5035621,0.5035617,0.5023768 +10,0.43660313,0.4366135,0.43496045 +11,0.37350416,0.37354943,0.3712711 +12,0.3694557,0.36947483,0.36708415 +13,0.38296118,0.38296735,0.38057274 +14,0.3801941,0.38019708,0.37771493 +15,0.39073846,0.39073724,0.38804337 +16,0.27941948,0.2793937,0.27774334 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlm-mlm-en-2048.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlm-mlm-en-2048.tsv new file mode 100644 index 0000000..d09397d --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlm-mlm-en-2048.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.48034036,0.48027167,0.4755281 +1,0.68549955,0.68547165,0.68418026 +2,0.7502881,0.7502652,0.7497456 +3,0.7662417,0.7662214,0.7659151 +4,0.7910623,0.7910466,0.79085386 +5,0.8090659,0.8090618,0.80895317 +6,0.82148397,0.8214852,0.821408 +7,0.8091143,0.8091184,0.8090199 +8,0.77966934,0.7796406,0.77937865 +9,0.75278246,0.7527972,0.7524639 +10,0.72071564,0.7207407,0.7202978 +11,0.7175687,0.7176211,0.7170889 +12,0.22130837,0.22130068,0.21938775 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlm-roberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlm-roberta-base.tsv new file mode 100644 index 0000000..a39b6ba --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlm-roberta-base.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.31767526,0.31771243,0.31208947 +1,0.45930108,0.45930612,0.4573549 +2,0.6739723,0.6739605,0.67332643 +3,0.7428563,0.7428622,0.74252146 +4,0.7270618,0.7270706,0.7267292 +5,0.7459538,0.7459533,0.74563044 +6,0.7416182,0.74162334,0.74136156 +7,0.7766629,0.7766664,0.7764565 +8,0.7827196,0.78271383,0.78251594 +9,0.81658614,0.8165717,0.81639785 +10,0.83839214,0.83837646,0.8382293 +11,0.8711623,0.8711581,0.87106025 +12,0.9843661,0.98436636,0.9843645 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlm-roberta-large.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlm-roberta-large.tsv new file mode 100644 index 0000000..66ab214 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlm-roberta-large.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.38918123,0.38920417,0.3852401 +1,0.66835684,0.6683084,0.6677018 +2,0.7323929,0.7323684,0.7321559 +3,0.7391762,0.7391537,0.73889536 +4,0.7922834,0.79227173,0.7921484 +5,0.79589903,0.795871,0.7957138 +6,0.8166894,0.816673,0.8165898 +7,0.8223533,0.8223572,0.82228154 +8,0.834576,0.8345772,0.8344947 +9,0.8377803,0.83777326,0.8376894 +10,0.8380223,0.8380033,0.83791 +11,0.8415803,0.84157884,0.8414282 +12,0.84659237,0.8466055,0.84632146 +13,0.8437288,0.84372836,0.84340864 +14,0.846515,0.84650415,0.8461781 +15,0.8514585,0.8514379,0.85112184 +16,0.84461045,0.8446081,0.8442589 +17,0.85291016,0.8529066,0.8525485 +18,0.8582745,0.8582787,0.85787606 +19,0.85327464,0.8532746,0.85287833 +20,0.86624545,0.86624,0.86592185 +21,0.8854349,0.88543147,0.88515806 +22,0.8891757,0.8891605,0.88892245 +23,0.88805044,0.88803035,0.88777393 +24,0.9840399,0.98404247,0.984038 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlnet-base-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlnet-base-cased.tsv new file mode 100644 index 0000000..0e70f56 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlnet-base-cased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.29910204,0.29919305,0.29052314 +1,0.29633516,0.29640594,0.2915415 +2,0.28782755,0.28787795,0.28492415 +3,0.29966587,0.2996727,0.29745364 +4,0.32897076,0.32897395,0.3263186 +5,0.34247187,0.3424195,0.34024557 +6,0.61728173,0.61718243,0.6160013 +7,0.6704566,0.6703779,0.66936857 +8,0.8596307,0.8595696,0.859391 +9,0.8611796,0.8611522,0.8610164 +10,0.89382625,0.8938215,0.8937337 +11,0.97762144,0.9776183,0.97761476 +12,0.93146294,0.93134,0.93100053 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlnet-large-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlnet-large-cased.tsv new file mode 100644 index 0000000..7cb41d3 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/en/xlnet-large-cased.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.41637358,0.41643414,0.41258112 +1,0.32545134,0.32545993,0.3204785 +2,0.29599807,0.29601985,0.29176536 +3,0.21799843,0.2180424,0.21441601 +4,0.2619272,0.261958,0.25913864 +5,0.30362618,0.30360785,0.30147976 +6,0.31371272,0.3136575,0.31170228 +7,0.3085695,0.30850938,0.30676135 +8,0.3251663,0.32509723,0.32402074 +9,0.34611195,0.34610417,0.3449464 +10,0.33172518,0.3316963,0.32996267 +11,0.32673666,0.32671896,0.3252777 +12,0.3015574,0.30154356,0.29979268 +13,0.33127543,0.33126998,0.33017284 +14,0.33191463,0.33192313,0.3307891 +15,0.3753324,0.3753503,0.374231 +16,0.37750244,0.37751338,0.37648135 +17,0.3678608,0.3678761,0.36674905 +18,0.305072,0.3050984,0.3042137 +19,0.42524177,0.4253285,0.42387673 +20,0.59149736,0.59153783,0.5901478 +21,0.6070587,0.607099,0.6057612 +22,0.80884385,0.80882186,0.8085461 +23,0.9555436,0.9555404,0.95551467 +24,0.96873486,0.9687297,0.9685215 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/es/bert-base-multilingual-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/es/bert-base-multilingual-cased.tsv new file mode 100644 index 0000000..29f24be --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/es/bert-base-multilingual-cased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.32142487,0.32125905,0.31729683 +1,0.39584324,0.395717,0.39326182 +2,0.3895418,0.38945207,0.38716727 +3,0.47731403,0.47727716,0.47604948 +4,0.5232235,0.5231792,0.52232313 +5,0.5989939,0.59892774,0.59843445 +6,0.6496523,0.6496062,0.649302 +7,0.5524209,0.5523591,0.55184853 +8,0.52988493,0.5298184,0.52922106 +9,0.63474494,0.6346978,0.6342529 +10,0.70397323,0.7039352,0.703585 +11,0.7417414,0.74173224,0.74136305 +12,0.39257455,0.39254928,0.39194846 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/es/xlm-mlm-100-1280.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/es/xlm-mlm-100-1280.tsv new file mode 100644 index 0000000..137c8b4 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/es/xlm-mlm-100-1280.tsv @@ -0,0 +1,18 @@ +LAYER,P,R,F +0,0.29741356,0.29718205,0.29312935 +1,0.33412832,0.33395684,0.3312904 +2,0.35136887,0.35124466,0.3492788 +3,0.36096326,0.3608026,0.35864976 +4,0.36783966,0.36770988,0.36555293 +5,0.4318944,0.4317502,0.4300937 +6,0.54022354,0.54010266,0.5391772 +7,0.5873484,0.5872481,0.58660454 +8,0.56757474,0.5674764,0.566725 +9,0.50883144,0.5087277,0.5079181 +10,0.43789023,0.43777642,0.4366415 +11,0.37517586,0.37504935,0.3734603 +12,0.37935427,0.37921786,0.37755096 +13,0.39596176,0.39583504,0.39407465 +14,0.40488854,0.4047234,0.40284988 +15,0.41720447,0.41700417,0.41506332 +16,0.321014,0.32089671,0.31943843 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/es/xlm-roberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/es/xlm-roberta-base.tsv new file mode 100644 index 0000000..8ed0d15 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/es/xlm-roberta-base.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.3246688,0.32442638,0.31979698 +1,0.4669744,0.46682546,0.46536762 +2,0.682952,0.68287796,0.6824639 +3,0.75232756,0.7522827,0.7520721 +4,0.73857796,0.73851913,0.73830944 +5,0.7549688,0.7549195,0.75471216 +6,0.7463499,0.74629426,0.7461334 +7,0.7811989,0.78114533,0.78101724 +8,0.78642476,0.7863655,0.7862384 +9,0.8234212,0.823385,0.8232284 +10,0.8446837,0.8446493,0.8445056 +11,0.87540615,0.8753815,0.8752877 +12,0.9844347,0.9844323,0.9844318 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/es/xlm-roberta-large.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/es/xlm-roberta-large.tsv new file mode 100644 index 0000000..9318273 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/es/xlm-roberta-large.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.39393866,0.39371517,0.3905179 +1,0.6807716,0.6807661,0.680328 +2,0.7418765,0.74186456,0.74167407 +3,0.74935234,0.7493611,0.7491301 +4,0.79821396,0.79822713,0.7980995 +5,0.7988987,0.7989139,0.7987521 +6,0.8229017,0.8228938,0.8228024 +7,0.8280001,0.8279914,0.8279237 +8,0.8397697,0.8397626,0.8396876 +9,0.8410181,0.8410066,0.84094054 +10,0.8409921,0.8409992,0.8409067 +11,0.8431543,0.8431424,0.84302104 +12,0.8459719,0.84595364,0.84571356 +13,0.8396326,0.839628,0.83931595 +14,0.84028465,0.84028375,0.83993286 +15,0.8447372,0.84472674,0.8444034 +16,0.8363781,0.8363222,0.8360513 +17,0.84482056,0.8447689,0.8445116 +18,0.85074264,0.85068643,0.8504014 +19,0.84944814,0.8493866,0.8491228 +20,0.86171687,0.86166567,0.8614421 +21,0.87797874,0.8779322,0.8777276 +22,0.87815136,0.87810516,0.87791014 +23,0.87712365,0.87708676,0.8768752 +24,0.9812538,0.9812441,0.9812441 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/et/bert-base-multilingual-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/et/bert-base-multilingual-cased.tsv new file mode 100644 index 0000000..b9e6443 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/et/bert-base-multilingual-cased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.27440318,0.27450797,0.2698814 +1,0.36711293,0.3672066,0.3646441 +2,0.36751607,0.36758184,0.36546195 +3,0.44396114,0.4440282,0.44275236 +4,0.49434176,0.49438694,0.49351478 +5,0.5781191,0.57814497,0.57762396 +6,0.6325188,0.63253754,0.63219965 +7,0.5371272,0.5371553,0.53662723 +8,0.51365125,0.5136854,0.5130298 +9,0.61113626,0.6111767,0.6106605 +10,0.68986833,0.6898959,0.6895253 +11,0.72481495,0.7248488,0.72443366 +12,0.41427994,0.414279,0.41360843 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/et/xlm-mlm-100-1280.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/et/xlm-mlm-100-1280.tsv new file mode 100644 index 0000000..48b8cc5 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/et/xlm-mlm-100-1280.tsv @@ -0,0 +1,18 @@ +LAYER,P,R,F +0,0.22709163,0.2271243,0.22315507 +1,0.28697282,0.28699732,0.284561 +2,0.31591207,0.31594896,0.3142282 +3,0.3272068,0.3271873,0.3251662 +4,0.33797315,0.33791435,0.3357934 +5,0.39506105,0.39499047,0.39325175 +6,0.49566302,0.4955908,0.49454838 +7,0.55213124,0.5520629,0.55135715 +8,0.5356107,0.53553146,0.53473157 +9,0.48094663,0.4808736,0.4799986 +10,0.41156343,0.41149083,0.410293 +11,0.36135536,0.36126482,0.3597544 +12,0.3840661,0.38395354,0.3824061 +13,0.3990762,0.39895925,0.39723954 +14,0.40530387,0.40517297,0.40322375 +15,0.41519368,0.41508782,0.4130928 +16,0.3316055,0.33152688,0.32986996 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/et/xlm-roberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/et/xlm-roberta-base.tsv new file mode 100644 index 0000000..d5874c5 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/et/xlm-roberta-base.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.27967498,0.27960515,0.27565888 +1,0.4284523,0.4284252,0.42707014 +2,0.6428217,0.64281446,0.6423762 +3,0.7207139,0.72071636,0.72050244 +4,0.7149051,0.7149116,0.7146955 +5,0.7364546,0.7364631,0.73624396 +6,0.72894406,0.7289576,0.7287705 +7,0.76335233,0.76335174,0.7631944 +8,0.7660467,0.7660525,0.76588887 +9,0.80481553,0.8047997,0.8046123 +10,0.824247,0.8242213,0.8240452 +11,0.8616431,0.8616192,0.8615053 +12,0.9794287,0.9794275,0.9794225 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/et/xlm-roberta-large.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/et/xlm-roberta-large.tsv new file mode 100644 index 0000000..722e83c --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/et/xlm-roberta-large.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.34819788,0.3482508,0.34528664 +1,0.66133285,0.6613388,0.66087705 +2,0.7167448,0.71674955,0.71656334 +3,0.7235102,0.7235182,0.7232822 +4,0.7763208,0.77634054,0.7762066 +5,0.7787467,0.77879304,0.77860975 +6,0.8065161,0.8065541,0.8064417 +7,0.8130386,0.8130481,0.81297535 +8,0.8232221,0.8232352,0.82315505 +9,0.8259885,0.8259966,0.82592285 +10,0.8261345,0.8261378,0.82604396 +11,0.8302732,0.83030087,0.8301369 +12,0.832208,0.8322509,0.83195096 +13,0.8284099,0.82843494,0.8280566 +14,0.8308385,0.830874,0.83043313 +15,0.83593214,0.83598274,0.8355737 +16,0.8225831,0.8226431,0.8222514 +17,0.83149856,0.83155996,0.83119583 +18,0.8360739,0.83612305,0.83573186 +19,0.8338515,0.8339162,0.8335273 +20,0.85045713,0.8505154,0.8501959 +21,0.866938,0.8670008,0.86669517 +22,0.86754334,0.86759776,0.86728114 +23,0.86495036,0.86501676,0.86465526 +24,0.97565717,0.97566575,0.97565126 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fi/bert-base-multilingual-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fi/bert-base-multilingual-cased.tsv new file mode 100644 index 0000000..db6baa6 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fi/bert-base-multilingual-cased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.27203143,0.2718125,0.2674527 +1,0.3669008,0.36672932,0.36434102 +2,0.36613643,0.36596906,0.36401412 +3,0.4369806,0.43683773,0.43563512 +4,0.4888657,0.48875853,0.48795715 +5,0.5726952,0.5726454,0.572158 +6,0.62713367,0.62711185,0.6267881 +7,0.5336007,0.53355575,0.53305566 +8,0.51138526,0.51132864,0.51072747 +9,0.6112424,0.6111909,0.6107369 +10,0.6913106,0.6912809,0.6909531 +11,0.7289148,0.7289066,0.7285409 +12,0.40449622,0.4044448,0.4038471 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fi/xlm-mlm-100-1280.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fi/xlm-mlm-100-1280.tsv new file mode 100644 index 0000000..cf5544e --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fi/xlm-mlm-100-1280.tsv @@ -0,0 +1,18 @@ +LAYER,P,R,F +0,0.23438127,0.23428068,0.23040625 +1,0.2891474,0.2890501,0.28663626 +2,0.31794775,0.3178401,0.3161117 +3,0.3314175,0.3313274,0.32932603 +4,0.342742,0.34266472,0.34063184 +5,0.40328184,0.40322024,0.40158102 +6,0.5053177,0.5052804,0.50429296 +7,0.55995744,0.5599387,0.55925107 +8,0.5432386,0.5432242,0.5424414 +9,0.48718062,0.4871476,0.48624423 +10,0.41743338,0.41739362,0.4161943 +11,0.36450592,0.36447832,0.3629536 +12,0.38068864,0.38065174,0.37914556 +13,0.40042648,0.40037584,0.39876702 +14,0.40577888,0.405764,0.40404075 +15,0.4122403,0.412242,0.4104758 +16,0.32324278,0.3231793,0.3216624 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fi/xlm-roberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fi/xlm-roberta-base.tsv new file mode 100644 index 0000000..1386329 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fi/xlm-roberta-base.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.28559503,0.2854355,0.28159738 +1,0.4194148,0.41935146,0.417895 +2,0.6369165,0.63687444,0.63647 +3,0.7129336,0.71288896,0.71269244 +4,0.705694,0.7056649,0.7054607 +5,0.7278231,0.72779924,0.7275826 +6,0.7264064,0.72638345,0.72620934 +7,0.76126385,0.7612437,0.7610952 +8,0.76516724,0.76513124,0.76499206 +9,0.8022079,0.8021703,0.8020057 +10,0.8249256,0.8248923,0.824736 +11,0.86274844,0.8627164,0.862623 +12,0.98083913,0.9808375,0.9808362 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fi/xlm-roberta-large.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fi/xlm-roberta-large.tsv new file mode 100644 index 0000000..2c05f81 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fi/xlm-roberta-large.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.36092442,0.36074498,0.3580085 +1,0.6607407,0.66068447,0.66028255 +2,0.7176594,0.7175985,0.71745765 +3,0.7285679,0.72852075,0.72832286 +4,0.78595924,0.7859272,0.7858384 +5,0.7865282,0.7864904,0.7863824 +6,0.8087826,0.80874693,0.80867803 +7,0.81360877,0.8135691,0.8135222 +8,0.8234922,0.82345206,0.82339203 +9,0.82659143,0.8265619,0.8265032 +10,0.82844096,0.8284168,0.8283329 +11,0.833159,0.83313984,0.83300036 +12,0.83688194,0.8368595,0.8365941 +13,0.83482826,0.8348066,0.83445275 +14,0.8371448,0.8371316,0.8367094 +15,0.8411402,0.8411226,0.8407152 +16,0.8285362,0.828508,0.8281295 +17,0.8365054,0.8364763,0.8361323 +18,0.84074885,0.84073424,0.8403675 +19,0.8374997,0.8374846,0.83713585 +20,0.85316974,0.8531484,0.85286206 +21,0.8724993,0.87247324,0.87221074 +22,0.87472016,0.87468535,0.87441224 +23,0.8715076,0.8714718,0.8711863 +24,0.97793525,0.97793806,0.9779296 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fr/bert-base-multilingual-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fr/bert-base-multilingual-cased.tsv new file mode 100644 index 0000000..ef71e3e --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fr/bert-base-multilingual-cased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.3169629,0.31686378,0.31290925 +1,0.3973607,0.39730093,0.3948981 +2,0.3917096,0.39167702,0.38944873 +3,0.471558,0.4715446,0.4703017 +4,0.51729333,0.5172892,0.5164051 +5,0.5921461,0.59214556,0.59160614 +6,0.64118487,0.6411703,0.64082944 +7,0.54434645,0.5443365,0.5437896 +8,0.52369165,0.5237088,0.5230594 +9,0.62573117,0.62573653,0.6252499 +10,0.69342446,0.6934141,0.6930288 +11,0.72644377,0.72643,0.7260432 +12,0.37622055,0.3762342,0.37555423 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fr/xlm-mlm-100-1280.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fr/xlm-mlm-100-1280.tsv new file mode 100644 index 0000000..b79195a --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fr/xlm-mlm-100-1280.tsv @@ -0,0 +1,18 @@ +LAYER,P,R,F +0,0.29251722,0.29243135,0.28824046 +1,0.3270653,0.32702345,0.32414123 +2,0.34298986,0.34297037,0.34081614 +3,0.35257423,0.35255608,0.3502542 +4,0.36079553,0.36077785,0.35852012 +5,0.4250942,0.425059,0.42333168 +6,0.5288226,0.5288088,0.5278067 +7,0.57518166,0.5751787,0.5744667 +8,0.5556386,0.5556409,0.554816 +9,0.50031036,0.50027037,0.49935982 +10,0.431764,0.43173033,0.43051916 +11,0.3727856,0.37272698,0.37108865 +12,0.3785679,0.37849474,0.37677515 +13,0.3937992,0.39371702,0.39193982 +14,0.3963082,0.39625022,0.3943681 +15,0.40861925,0.408575,0.40663382 +16,0.3136189,0.3135873,0.3120113 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fr/xlm-roberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fr/xlm-roberta-base.tsv new file mode 100644 index 0000000..dedf67a --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fr/xlm-roberta-base.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.32206962,0.32194686,0.31745258 +1,0.4602701,0.46020856,0.45864564 +2,0.6719199,0.6718807,0.67143625 +3,0.74045163,0.74043214,0.74017817 +4,0.72625005,0.7262382,0.72596425 +5,0.74321467,0.7431929,0.7429401 +6,0.73884493,0.7388181,0.7386279 +7,0.77495724,0.77493846,0.77478385 +8,0.78073204,0.7807058,0.7805547 +9,0.8198895,0.81987315,0.81971085 +10,0.84097534,0.84096044,0.8408151 +11,0.8744024,0.87438446,0.8742934 +12,0.98294896,0.98294634,0.9829455 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fr/xlm-roberta-large.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fr/xlm-roberta-large.tsv new file mode 100644 index 0000000..43d2c1d --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/fr/xlm-roberta-large.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.38867676,0.38860926,0.38541874 +1,0.6748494,0.6748672,0.6744121 +2,0.7362502,0.7362605,0.73607147 +3,0.74364084,0.7436084,0.7434166 +4,0.79383326,0.79382324,0.7937171 +5,0.79398805,0.7939688,0.79384273 +6,0.8189012,0.818897,0.81879824 +7,0.8252554,0.8252701,0.82518923 +8,0.8372976,0.8373069,0.837221 +9,0.83934426,0.8393484,0.8392743 +10,0.8396223,0.8396263,0.8395396 +11,0.8413963,0.8414122,0.84128094 +12,0.8425236,0.84252983,0.8422956 +13,0.836232,0.8362653,0.8359306 +14,0.8365411,0.8365994,0.83620155 +15,0.84075475,0.84081256,0.84043586 +16,0.8336484,0.83366156,0.83334255 +17,0.8420401,0.84204596,0.84175515 +18,0.84736043,0.847369,0.8470594 +19,0.8457147,0.84572095,0.84543604 +20,0.8610545,0.86105347,0.8608192 +21,0.8796009,0.87960935,0.87939256 +22,0.87826204,0.8782994,0.8780729 +23,0.8757684,0.8757959,0.8755639 +24,0.9783308,0.9783405,0.9783287 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/it/bert-base-multilingual-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/it/bert-base-multilingual-cased.tsv new file mode 100644 index 0000000..a7a016d --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/it/bert-base-multilingual-cased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.2844219,0.28444692,0.28044853 +1,0.37012622,0.37011567,0.3678241 +2,0.37155172,0.3715547,0.36946896 +3,0.4603244,0.46031958,0.45919034 +4,0.50872415,0.5087325,0.50791526 +5,0.5868436,0.5868716,0.5863534 +6,0.6397911,0.63983333,0.63949335 +7,0.5409238,0.54094136,0.54040617 +8,0.5172371,0.51725966,0.5166258 +9,0.62051994,0.6205607,0.62006223 +10,0.6916372,0.6916744,0.69127834 +11,0.7267179,0.72675204,0.7263427 +12,0.38121554,0.38125327,0.38057736 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/it/xlm-mlm-100-1280.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/it/xlm-mlm-100-1280.tsv new file mode 100644 index 0000000..8d185f4 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/it/xlm-mlm-100-1280.tsv @@ -0,0 +1,18 @@ +LAYER,P,R,F +0,0.26145306,0.26147375,0.25741524 +1,0.3025566,0.30248818,0.2998916 +2,0.32179558,0.32175842,0.31985885 +3,0.33394024,0.33392504,0.33166507 +4,0.34498307,0.3450014,0.34262 +5,0.41246715,0.4124828,0.41061035 +6,0.51987356,0.51987606,0.51879877 +7,0.56968486,0.5696755,0.56891495 +8,0.5526059,0.55259466,0.55172443 +9,0.49650237,0.49646214,0.49543175 +10,0.42862728,0.42857316,0.42718053 +11,0.36833626,0.36827257,0.3663598 +12,0.37506276,0.3750053,0.37302044 +13,0.38766044,0.38759127,0.3855202 +14,0.39820743,0.39815167,0.39614087 +15,0.4081781,0.40812454,0.4060677 +16,0.31196377,0.31188112,0.31034505 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/it/xlm-roberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/it/xlm-roberta-base.tsv new file mode 100644 index 0000000..a680823 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/it/xlm-roberta-base.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.29116568,0.29114744,0.2868295 +1,0.44197133,0.4419524,0.4405804 +2,0.6624113,0.662375,0.661958 +3,0.73566717,0.7356161,0.73541015 +4,0.72424763,0.72419375,0.7239804 +5,0.74316144,0.743101,0.7429021 +6,0.7358866,0.7358457,0.7356837 +7,0.7717992,0.77175343,0.7716246 +8,0.77671385,0.77666664,0.7765362 +9,0.8156109,0.8155815,0.81542325 +10,0.8353943,0.8353729,0.83522326 +11,0.8693978,0.86938006,0.86928266 +12,0.98234653,0.98234344,0.9823433 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/it/xlm-roberta-large.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/it/xlm-roberta-large.tsv new file mode 100644 index 0000000..bced5e2 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/it/xlm-roberta-large.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.3594449,0.35943142,0.35630783 +1,0.662669,0.662666,0.66222733 +2,0.7278628,0.72787654,0.727691 +3,0.7365745,0.73659885,0.7363675 +4,0.7886599,0.7886995,0.7885636 +5,0.7880371,0.7880777,0.7879012 +6,0.8136995,0.813729,0.8136207 +7,0.8208896,0.8209284,0.82083935 +8,0.83259714,0.8326411,0.8325414 +9,0.83512545,0.83517814,0.83508295 +10,0.8349007,0.8349598,0.83484215 +11,0.8370682,0.83713394,0.83697623 +12,0.83735925,0.8374388,0.83716834 +13,0.8307876,0.8308769,0.8305337 +14,0.8304336,0.83052474,0.83013064 +15,0.8350196,0.83511585,0.8347356 +16,0.8262828,0.8263541,0.82602215 +17,0.8352246,0.83529,0.8349814 +18,0.8413706,0.8414452,0.84111327 +19,0.84041846,0.84048223,0.840178 +20,0.85462093,0.8546788,0.854426 +21,0.8733275,0.87337714,0.8731498 +22,0.87235314,0.8724075,0.87218434 +23,0.86924857,0.86931163,0.8690715 +24,0.97641337,0.9764174,0.97640705 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/lv/bert-base-multilingual-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/lv/bert-base-multilingual-cased.tsv new file mode 100644 index 0000000..fe4c935 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/lv/bert-base-multilingual-cased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.31880563,0.31885436,0.314444 +1,0.39939553,0.399461,0.39680958 +2,0.39936826,0.39942977,0.39705652 +3,0.4639698,0.46403775,0.462585 +4,0.51133174,0.511391,0.5104017 +5,0.58995867,0.59001076,0.5894416 +6,0.64041185,0.6404576,0.640104 +7,0.5489481,0.5489947,0.5485002 +8,0.5241059,0.5241476,0.5235563 +9,0.61489826,0.6149375,0.614489 +10,0.69464105,0.6946774,0.69437844 +11,0.73005176,0.7301036,0.72975814 +12,0.42655912,0.42657772,0.42596325 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/lv/xlm-mlm-100-1280.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/lv/xlm-mlm-100-1280.tsv new file mode 100644 index 0000000..a79d579 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/lv/xlm-mlm-100-1280.tsv @@ -0,0 +1,18 @@ +LAYER,P,R,F +0,0.25295407,0.2529038,0.24914542 +1,0.30763087,0.30758235,0.3050838 +2,0.3358753,0.33583683,0.33403713 +3,0.35062265,0.35062423,0.34857833 +4,0.36368594,0.36370537,0.36166307 +5,0.4208051,0.42084384,0.41921085 +6,0.52163017,0.5216751,0.5207288 +7,0.5748712,0.57491165,0.57426846 +8,0.5565561,0.55660844,0.55587536 +9,0.50083,0.50086135,0.5000541 +10,0.4287173,0.42873642,0.4276349 +11,0.37965864,0.37967306,0.37825358 +12,0.407949,0.40795445,0.40652746 +13,0.43800756,0.437995,0.43645307 +14,0.45024598,0.4502631,0.4485536 +15,0.45746338,0.45749146,0.4557482 +16,0.38742596,0.38743827,0.3859296 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/lv/xlm-roberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/lv/xlm-roberta-base.tsv new file mode 100644 index 0000000..2358e52 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/lv/xlm-roberta-base.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.3158023,0.31595236,0.31170404 +1,0.44148916,0.44161677,0.43999764 +2,0.65698195,0.65707916,0.65660477 +3,0.7291459,0.72921735,0.72896385 +4,0.72035086,0.720424,0.72016907 +5,0.7387083,0.73877054,0.73851764 +6,0.7331035,0.7331564,0.73294306 +7,0.7675076,0.767555,0.7673717 +8,0.7721929,0.7722387,0.77205515 +9,0.8134348,0.81347644,0.81327385 +10,0.8337028,0.8337392,0.8335502 +11,0.86931133,0.869342,0.86921614 +12,0.98048294,0.9804859,0.980481 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/lv/xlm-roberta-large.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/lv/xlm-roberta-large.tsv new file mode 100644 index 0000000..933e92b --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/lv/xlm-roberta-large.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.38303047,0.38316694,0.38004494 +1,0.6715437,0.67160815,0.671146 +2,0.72935355,0.7293971,0.7292059 +3,0.7367963,0.7368109,0.73659825 +4,0.78665257,0.78668237,0.7865436 +5,0.7876893,0.7877102,0.7875555 +6,0.8118788,0.811887,0.8117912 +7,0.81852704,0.8185447,0.81847227 +8,0.82763994,0.8276652,0.8275769 +9,0.829965,0.8299915,0.8299079 +10,0.8325733,0.8325909,0.832492 +11,0.83627987,0.8362996,0.8361541 +12,0.83918196,0.8392273,0.8389481 +13,0.83649516,0.8365421,0.83620304 +14,0.8397933,0.8398624,0.8394616 +15,0.84358793,0.8436498,0.8432716 +16,0.83227086,0.8323361,0.8319669 +17,0.83968145,0.83974457,0.8394039 +18,0.8447246,0.84477955,0.8444194 +19,0.8420644,0.8421077,0.84175897 +20,0.85892874,0.85897714,0.85869175 +21,0.8784681,0.87850714,0.8782475 +22,0.8812008,0.8812461,0.8809788 +23,0.8809998,0.88104856,0.8807619 +24,0.9765009,0.9765086,0.9764968 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/pt/bert-base-multilingual-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/pt/bert-base-multilingual-cased.tsv new file mode 100644 index 0000000..d0e59e2 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/pt/bert-base-multilingual-cased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.29287484,0.29276612,0.28896153 +1,0.37047997,0.3703816,0.36809015 +2,0.36899555,0.36891612,0.36687937 +3,0.46113333,0.46108902,0.46000266 +4,0.5105716,0.5105592,0.5097696 +5,0.5895024,0.5895065,0.5890118 +6,0.6431079,0.6431254,0.64279854 +7,0.5462664,0.54628617,0.5457523 +8,0.5256067,0.5256172,0.5249814 +9,0.6314677,0.6314837,0.63099706 +10,0.70045394,0.7004913,0.7001096 +11,0.73772144,0.7377826,0.73737544 +12,0.376468,0.37648788,0.37585765 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/pt/xlm-mlm-100-1280.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/pt/xlm-mlm-100-1280.tsv new file mode 100644 index 0000000..110b4aa --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/pt/xlm-mlm-100-1280.tsv @@ -0,0 +1,18 @@ +LAYER,P,R,F +0,0.27077773,0.27081063,0.26688486 +1,0.31458914,0.31458747,0.3120791 +2,0.33407974,0.3341051,0.33230388 +3,0.3424346,0.34244755,0.3402508 +4,0.35230166,0.35230178,0.35003006 +5,0.4220341,0.42202395,0.4202843 +6,0.53116757,0.53115034,0.530122 +7,0.5820105,0.5819889,0.5812692 +8,0.5657533,0.56574196,0.56491727 +9,0.5071269,0.5071374,0.5062459 +10,0.43731558,0.43734074,0.43611565 +11,0.37808847,0.37813658,0.37643093 +12,0.38327742,0.3833187,0.38146868 +13,0.39855412,0.39860153,0.3966159 +14,0.40502536,0.4050431,0.4029639 +15,0.4187931,0.4188173,0.41667226 +16,0.3218223,0.32182986,0.32025683 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/pt/xlm-roberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/pt/xlm-roberta-base.tsv new file mode 100644 index 0000000..f30f813 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/pt/xlm-roberta-base.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.302053,0.30184427,0.2976399 +1,0.45684627,0.45677197,0.45546424 +2,0.6735796,0.6735233,0.6731233 +3,0.74322075,0.74317265,0.74297166 +4,0.72940576,0.72935677,0.72914743 +5,0.74814695,0.748095,0.74789345 +6,0.7392128,0.739171,0.7390097 +7,0.7750178,0.774979,0.7748446 +8,0.7798485,0.77981144,0.779676 +9,0.81777656,0.8177529,0.8175885 +10,0.83894795,0.8389314,0.838778 +11,0.870458,0.87044656,0.8703426 +12,0.9830619,0.98306423,0.98306143 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/pt/xlm-roberta-large.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/pt/xlm-roberta-large.tsv new file mode 100644 index 0000000..f2a8901 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/pt/xlm-roberta-large.tsv @@ -0,0 +1,26 @@ +LAYER,P,R,F +0,0.3740441,0.37399486,0.3710023 +1,0.67301875,0.6729773,0.6725724 +2,0.7341082,0.73409325,0.733912 +3,0.74055076,0.7405203,0.7403056 +4,0.7904661,0.79042983,0.79032314 +5,0.7880771,0.78803754,0.78790236 +6,0.81661665,0.8166169,0.81652534 +7,0.8221869,0.82219744,0.82212555 +8,0.8350775,0.83508027,0.8350043 +9,0.8372719,0.83726805,0.8372026 +10,0.8372136,0.8371918,0.8371133 +11,0.8399054,0.8398653,0.83975667 +12,0.84060127,0.8405483,0.84033316 +13,0.8341999,0.8341561,0.83385843 +14,0.83416283,0.83414257,0.8337824 +15,0.8384014,0.83838236,0.8380531 +16,0.8296981,0.82966036,0.8293861 +17,0.83966845,0.8396195,0.8393744 +18,0.84589136,0.8458346,0.845562 +19,0.84492606,0.8448792,0.8446221 +20,0.8584489,0.8584082,0.858195 +21,0.87398726,0.8739412,0.87374836 +22,0.8719638,0.8719428,0.8717388 +23,0.87165064,0.87161326,0.87140054 +24,0.97964114,0.9796477,0.979639 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/zh/bert-base-chinese.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/zh/bert-base-chinese.tsv new file mode 100644 index 0000000..93a76ed --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/zh/bert-base-chinese.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.2786982,0.2785878,0.27494037 +1,0.33671036,0.33662596,0.33471334 +2,0.42845756,0.4284101,0.4273608 +3,0.45149758,0.45147166,0.45057997 +4,0.5184017,0.5184023,0.51783705 +5,0.573508,0.5734958,0.57311326 +6,0.6330495,0.6330315,0.63276017 +7,0.59864044,0.5986131,0.59829366 +8,0.54804957,0.5480091,0.54755783 +9,0.51617336,0.516132,0.5156478 +10,0.5561151,0.55609417,0.55573994 +11,0.5984755,0.5984512,0.5981564 +12,0.56038475,0.5603337,0.5599188 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/zh/bert-base-multilingual-cased.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/zh/bert-base-multilingual-cased.tsv new file mode 100644 index 0000000..9f0efef --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/zh/bert-base-multilingual-cased.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.3118959,0.31177446,0.3086432 +1,0.3425565,0.34244964,0.3399823 +2,0.35352883,0.35343447,0.35129714 +3,0.43610418,0.43604368,0.43494177 +4,0.489178,0.4891102,0.48830378 +5,0.5690116,0.5689432,0.5684761 +6,0.6265541,0.6264865,0.6262059 +7,0.54113525,0.5410629,0.54064935 +8,0.5284168,0.52834535,0.5279011 +9,0.62840384,0.62833464,0.62803453 +10,0.69999313,0.69992936,0.6997184 +11,0.732485,0.73242646,0.73219264 +12,0.37793094,0.37789607,0.3773833 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/zh/xlm-mlm-100-1280.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/zh/xlm-mlm-100-1280.tsv new file mode 100644 index 0000000..0b0065a --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/zh/xlm-mlm-100-1280.tsv @@ -0,0 +1,18 @@ +LAYER,P,R,F +0,0.32776257,0.3276813,0.32470536 +1,0.3356181,0.3355479,0.332959 +2,0.35034394,0.35026166,0.3482373 +3,0.36442822,0.36435747,0.36224666 +4,0.3771403,0.37707978,0.37516475 +5,0.43258497,0.4325344,0.43104237 +6,0.5181599,0.5181224,0.5172326 +7,0.5792645,0.57922333,0.57866186 +8,0.5692134,0.5691731,0.56858486 +9,0.5324812,0.5324232,0.53178775 +10,0.47810394,0.47805268,0.47723517 +11,0.4319199,0.43188363,0.43088776 +12,0.44747546,0.447443,0.44653583 +13,0.45633683,0.4563076,0.45531917 +14,0.45723236,0.457195,0.45610127 +15,0.46675017,0.46670267,0.4656479 +16,0.40051928,0.40046176,0.39960644 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/zh/xlm-roberta-base.tsv b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/zh/xlm-roberta-base.tsv new file mode 100644 index 0000000..31c46db --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/rescale_baseline/zh/xlm-roberta-base.tsv @@ -0,0 +1,14 @@ +LAYER,P,R,F +0,0.36188287,0.36180493,0.35862362 +1,0.4372344,0.43716717,0.43550655 +2,0.64521,0.64515334,0.6446227 +3,0.734053,0.7340016,0.7337482 +4,0.730163,0.73011726,0.72988415 +5,0.7542184,0.7541747,0.7539484 +6,0.7611062,0.7610684,0.76089287 +7,0.79163146,0.7915949,0.79145956 +8,0.79859376,0.79856044,0.7984367 +9,0.82988167,0.8298588,0.82975745 +10,0.8522986,0.8522761,0.8521975 +11,0.8852355,0.88521546,0.88517046 +12,0.98287344,0.98286974,0.9828698 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/score.py b/mitigating_bias/train/BERTScore/bert_score/bert_score/score.py new file mode 100644 index 0000000..df60feb --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/score.py @@ -0,0 +1,305 @@ +import os +import sys +import time +import pathlib +import torch +import matplotlib.pyplot as plt +from mpl_toolkits.axes_grid1 import make_axes_locatable +import numpy as np +import pandas as pd + +from collections import defaultdict +from transformers import AutoTokenizer + +from .utils import ( + get_model, + get_tokenizer, + get_idf_dict, + bert_cos_score_idf, + get_bert_embedding, + lang2model, + model2layers, + get_hash, + cache_scibert, + sent_encode, +) + + +__all__ = ["score", "plot_example"] + + +def score( + cands, + refs, + model_type=None, + num_layers=None, + verbose=False, + idf=False, + device=None, + batch_size=64, + nthreads=4, + all_layers=False, + lang=None, + return_hash=False, + rescale_with_baseline=False, + baseline_path=None, + use_fast_tokenizer=False +): + """ + BERTScore metric. + + Args: + - :param: `cands` (list of str): candidate sentences + - :param: `refs` (list of str or list of list of str): reference sentences + - :param: `model_type` (str): bert specification, default using the suggested + model for the target langauge; has to specify at least one of + `model_type` or `lang` + - :param: `num_layers` (int): the layer of representation to use. + default using the number of layer tuned on WMT16 correlation data + - :param: `verbose` (bool): turn on intermediate status update + - :param: `idf` (bool or dict): use idf weighting, can also be a precomputed idf_dict + - :param: `device` (str): on which the contextual embedding model will be allocated on. + If this argument is None, the model lives on cuda:0 if cuda is available. + - :param: `nthreads` (int): number of threads + - :param: `batch_size` (int): bert score processing batch size + - :param: `lang` (str): language of the sentences; has to specify + at least one of `model_type` or `lang`. `lang` needs to be + specified when `rescale_with_baseline` is True. + - :param: `return_hash` (bool): return hash code of the setting + - :param: `rescale_with_baseline` (bool): rescale bertscore with pre-computed baseline + - :param: `baseline_path` (str): customized baseline file + - :param: `use_fast_tokenizer` (bool): `use_fast` parameter passed to HF tokenizer + + Return: + - :param: `(P, R, F)`: each is of shape (N); N = number of input + candidate reference pairs. if returning hashcode, the + output will be ((P, R, F), hashcode). If a candidate have + multiple references, the returned score of this candidate is + the *best* score among all references. + """ + assert len(cands) == len(refs), "Different number of candidates and references" + + assert lang is not None or model_type is not None, "Either lang or model_type should be specified" + + ref_group_boundaries = None + if not isinstance(refs[0], str): + ref_group_boundaries = [] + ori_cands, ori_refs = cands, refs + cands, refs = [], [] + count = 0 + for cand, ref_group in zip(ori_cands, ori_refs): + cands += [cand] * len(ref_group) + refs += ref_group + ref_group_boundaries.append((count, count + len(ref_group))) + count += len(ref_group) + + if rescale_with_baseline: + assert lang is not None, "Need to specify Language when rescaling with baseline" + + if model_type is None: + lang = lang.lower() + model_type = lang2model[lang] + if num_layers is None: + num_layers = model2layers[model_type] + + tokenizer = get_tokenizer(model_type, use_fast_tokenizer) + model = get_model(model_type, num_layers, all_layers) + if device is None: + device = "cuda" if torch.cuda.is_available() else "cpu" + model.to(device) + + if not idf: + idf_dict = defaultdict(lambda: 1.0) + # set idf for [SEP] and [CLS] to 0 + idf_dict[tokenizer.sep_token_id] = 0 + idf_dict[tokenizer.cls_token_id] = 0 + elif isinstance(idf, dict): + if verbose: + print("using predefined IDF dict...") + idf_dict = idf + else: + if verbose: + print("preparing IDF dict...") + start = time.perf_counter() + idf_dict = get_idf_dict(refs, tokenizer, nthreads=nthreads) + if verbose: + print("done in {:.2f} seconds".format(time.perf_counter() - start)) + + if verbose: + print("calculating scores...") + start = time.perf_counter() + all_preds = bert_cos_score_idf( + model, + refs, + cands, + tokenizer, + idf_dict, + verbose=verbose, + device=device, + batch_size=batch_size, + all_layers=all_layers, + ).cpu() + + if ref_group_boundaries is not None: + max_preds = [] + for beg, end in ref_group_boundaries: + max_preds.append(all_preds[beg:end].max(dim=0)[0]) + all_preds = torch.stack(max_preds, dim=0) + + use_custom_baseline = baseline_path is not None + if rescale_with_baseline: + if baseline_path is None: + baseline_path = os.path.join(os.path.dirname(__file__), f"rescale_baseline/{lang}/{model_type}.tsv") + if os.path.isfile(baseline_path): + if not all_layers: + baselines = torch.from_numpy(pd.read_csv(baseline_path).iloc[num_layers].to_numpy())[1:].float() + else: + baselines = torch.from_numpy(pd.read_csv(baseline_path).to_numpy())[:, 1:].unsqueeze(1).float() + + all_preds = (all_preds - baselines) / (1 - baselines) + else: + print( + f"Warning: Baseline not Found for {model_type} on {lang} at {baseline_path}", file=sys.stderr, + ) + + out = all_preds[..., 0], all_preds[..., 1], all_preds[..., 2] # P, R, F + + if verbose: + time_diff = time.perf_counter() - start + print(f"done in {time_diff:.2f} seconds, {len(refs) / time_diff:.2f} sentences/sec") + + if return_hash: + return tuple( + [ + out, + get_hash(model_type, num_layers, idf, rescale_with_baseline, + use_custom_baseline=use_custom_baseline, + use_fast_tokenizer=use_fast_tokenizer), + ] + ) + + return out + + +def plot_example( + candidate, + reference, + model_type=None, + num_layers=None, + lang=None, + rescale_with_baseline=False, + baseline_path=None, + use_fast_tokenizer=False, + fname="", +): + """ + BERTScore metric. + + Args: + - :param: `candidate` (str): a candidate sentence + - :param: `reference` (str): a reference sentence + - :param: `verbose` (bool): turn on intermediate status update + - :param: `model_type` (str): bert specification, default using the suggested + model for the target langauge; has to specify at least one of + `model_type` or `lang` + - :param: `num_layers` (int): the layer of representation to use + - :param: `lang` (str): language of the sentences; has to specify + at least one of `model_type` or `lang`. `lang` needs to be + specified when `rescale_with_baseline` is True. + - :param: `return_hash` (bool): return hash code of the setting + - :param: `rescale_with_baseline` (bool): rescale bertscore with pre-computed baseline + - :param: `use_fast_tokenizer` (bool): `use_fast` parameter passed to HF tokenizer + - :param: `fname` (str): path to save the output plot + """ + assert isinstance(candidate, str) + assert isinstance(reference, str) + + assert lang is not None or model_type is not None, "Either lang or model_type should be specified" + + if rescale_with_baseline: + assert lang is not None, "Need to specify Language when rescaling with baseline" + + if model_type is None: + lang = lang.lower() + model_type = lang2model[lang] + if num_layers is None: + num_layers = model2layers[model_type] + + tokenizer = get_tokenizer(model_type, use_fast_tokenizer) + model = get_model(model_type, num_layers) + device = "cuda" if torch.cuda.is_available() else "cpu" + model.to(device) + + idf_dict = defaultdict(lambda: 1.0) + # set idf for [SEP] and [CLS] to 0 + idf_dict[tokenizer.sep_token_id] = 0 + idf_dict[tokenizer.cls_token_id] = 0 + + hyp_embedding, masks, padded_idf = get_bert_embedding( + [candidate], model, tokenizer, idf_dict, device=device, all_layers=False + ) + ref_embedding, masks, padded_idf = get_bert_embedding( + [reference], model, tokenizer, idf_dict, device=device, all_layers=False + ) + ref_embedding.div_(torch.norm(ref_embedding, dim=-1).unsqueeze(-1)) + hyp_embedding.div_(torch.norm(hyp_embedding, dim=-1).unsqueeze(-1)) + sim = torch.bmm(hyp_embedding, ref_embedding.transpose(1, 2)) + sim = sim.squeeze(0).cpu() + + # remove [CLS] and [SEP] tokens + r_tokens = [tokenizer.decode([i]) for i in sent_encode(tokenizer, reference)][1:-1] + h_tokens = [tokenizer.decode([i]) for i in sent_encode(tokenizer, candidate)][1:-1] + sim = sim[1:-1, 1:-1] + + if rescale_with_baseline: + if baseline_path is None: + baseline_path = os.path.join(os.path.dirname(__file__), f"rescale_baseline/{lang}/{model_type}.tsv") + if os.path.isfile(baseline_path): + baselines = torch.from_numpy(pd.read_csv(baseline_path).iloc[num_layers].to_numpy())[1:].float() + sim = (sim - baselines[2].item()) / (1 - baselines[2].item()) + else: + print( + f"Warning: Baseline not Found for {model_type} on {lang} at {baseline_path}", file=sys.stderr, + ) + + fig, ax = plt.subplots(figsize=(len(r_tokens), len(h_tokens))) + im = ax.imshow(sim, cmap="Blues", vmin=0, vmax=1) + + # We want to show all ticks... + ax.set_xticks(np.arange(len(r_tokens))) + ax.set_yticks(np.arange(len(h_tokens))) + # ... and label them with the respective list entries + ax.set_xticklabels(r_tokens, fontsize=10) + ax.set_yticklabels(h_tokens, fontsize=10) + ax.grid(False) + plt.xlabel("Reference (tokenized)", fontsize=14) + plt.ylabel("Candidate (tokenized)", fontsize=14) + title = "Similarity Matrix" + if rescale_with_baseline: + title += " (after Rescaling)" + plt.title(title, fontsize=14) + + divider = make_axes_locatable(ax) + cax = divider.append_axes("right", size="2%", pad=0.2) + fig.colorbar(im, cax=cax) + + # Rotate the tick labels and set their alignment. + plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor") + + # Loop over data dimensions and create text annotations. + for i in range(len(h_tokens)): + for j in range(len(r_tokens)): + text = ax.text( + j, + i, + "{:.3f}".format(sim[i, j].item()), + ha="center", + va="center", + color="k" if sim[i, j].item() < 0.5 else "w", + ) + + fig.tight_layout() + if fname != "": + plt.savefig(fname, dpi=100) + print("Saved figure to file: ", fname) + plt.show() diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/scorer.py b/mitigating_bias/train/BERTScore/bert_score/bert_score/scorer.py new file mode 100644 index 0000000..3bafb3e --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/scorer.py @@ -0,0 +1,324 @@ +import os +import sys +import time +import pathlib +import torch +import matplotlib.pyplot as plt +from mpl_toolkits.axes_grid1 import make_axes_locatable +import numpy as np +import pandas as pd +import warnings + +from collections import defaultdict +from transformers import AutoTokenizer + +from .utils import ( + get_model, + get_tokenizer, + get_idf_dict, + bert_cos_score_idf, + get_bert_embedding, + lang2model, + model2layers, + get_hash, + cache_scibert, + sent_encode, +) + + +class BERTScorer: + """ + BERTScore Scorer Object. + """ + + def __init__( + self, + model_type=None, + num_layers=None, + batch_size=64, + nthreads=4, + all_layers=False, + idf=False, + idf_sents=None, + device=None, + lang=None, + rescale_with_baseline=False, + baseline_path=None, + use_fast_tokenizer=False + ): + """ + Args: + - :param: `model_type` (str): contexual embedding model specification, default using the suggested + model for the target langauge; has to specify at least one of + `model_type` or `lang` + - :param: `num_layers` (int): the layer of representation to use. + default using the number of layer tuned on WMT16 correlation data + - :param: `verbose` (bool): turn on intermediate status update + - :param: `idf` (bool): a booling to specify whether to use idf or not (this should be True even if `idf_sents` is given) + - :param: `idf_sents` (List of str): list of sentences used to compute the idf weights + - :param: `device` (str): on which the contextual embedding model will be allocated on. + If this argument is None, the model lives on cuda:0 if cuda is available. + - :param: `batch_size` (int): bert score processing batch size + - :param: `nthreads` (int): number of threads + - :param: `lang` (str): language of the sentences; has to specify + at least one of `model_type` or `lang`. `lang` needs to be + specified when `rescale_with_baseline` is True. + - :param: `return_hash` (bool): return hash code of the setting + - :param: `rescale_with_baseline` (bool): rescale bertscore with pre-computed baseline + - :param: `baseline_path` (str): customized baseline file + - :param: `use_fast_tokenizer` (bool): `use_fast` parameter passed to HF tokenizer + """ + + assert lang is not None or model_type is not None, "Either lang or model_type should be specified" + + if rescale_with_baseline: + assert lang is not None, "Need to specify Language when rescaling with baseline" + + if device is None: + self.device = "cuda" if torch.cuda.is_available() else "cpu" + else: + self.device = device + + self._lang = lang + self._rescale_with_baseline = rescale_with_baseline + self._idf = idf + self.batch_size = batch_size + self.nthreads = nthreads + self.all_layers = all_layers + + if model_type is None: + lang = lang.lower() + self._model_type = lang2model[lang] + else: + self._model_type = model_type + + if num_layers is None: + self._num_layers = model2layers[self.model_type] + else: + self._num_layers = num_layers + + # Building model and tokenizer + self._use_fast_tokenizer = use_fast_tokenizer + self._tokenizer = get_tokenizer(self.model_type, self._use_fast_tokenizer) + self._model = get_model(self.model_type, self.num_layers, self.all_layers) + self._model.to(self.device) + + self._idf_dict = None + if idf_sents is not None: + self.compute_idf(idf_sents) + + self._baseline_vals = None + self.baseline_path = baseline_path + self.use_custom_baseline = self.baseline_path is not None + if self.baseline_path is None: + self.baseline_path = os.path.join( + os.path.dirname(__file__), f"rescale_baseline/{self.lang}/{self.model_type}.tsv" + ) + + @property + def lang(self): + return self._lang + + @property + def idf(self): + return self._idf + + @property + def model_type(self): + return self._model_type + + @property + def num_layers(self): + return self._num_layers + + @property + def rescale_with_baseline(self): + return self._rescale_with_baseline + + @property + def baseline_vals(self): + if self._baseline_vals is None: + if os.path.isfile(self.baseline_path): + if not self.all_layers: + self._baseline_vals = torch.from_numpy( + pd.read_csv(self.baseline_path).iloc[self.num_layers].to_numpy() + )[1:].float() + else: + self._baseline_vals = ( + torch.from_numpy(pd.read_csv(self.baseline_path).to_numpy())[:, 1:].unsqueeze(1).float() + ) + else: + raise ValueError(f"Baseline not Found for {self.model_type} on {self.lang} at {self.baseline_path}") + + return self._baseline_vals + + @property + def use_fast_tokenizer(self): + return self._use_fast_tokenizer + + @property + def hash(self): + return get_hash( + self.model_type, self.num_layers, self.idf, self.rescale_with_baseline, self.use_custom_baseline, self.use_fast_tokenizer + ) + + def compute_idf(self, sents): + """ + Args: + + """ + if self._idf_dict is not None: + warnings.warn("Overwriting the previous importance weights.") + + self._idf_dict = get_idf_dict(sents, self._tokenizer, nthreads=self.nthreads) + + def score(self, cands, refs, verbose=False, batch_size=64, return_hash=False): + """ + Args: + - :param: `cands` (list of str): candidate sentences + - :param: `refs` (list of str or list of list of str): reference sentences + + Return: + - :param: `(P, R, F)`: each is of shape (N); N = number of input + candidate reference pairs. if returning hashcode, the + output will be ((P, R, F), hashcode). If a candidate have + multiple references, the returned score of this candidate is + the *best* score among all references. + """ + + ref_group_boundaries = None + if not isinstance(refs[0], str): + ref_group_boundaries = [] + ori_cands, ori_refs = cands, refs + cands, refs = [], [] + count = 0 + for cand, ref_group in zip(ori_cands, ori_refs): + cands += [cand] * len(ref_group) + refs += ref_group + ref_group_boundaries.append((count, count + len(ref_group))) + count += len(ref_group) + + if verbose: + print("calculating scores...") + start = time.perf_counter() + + if self.idf: + assert self._idf_dict, "IDF weights are not computed" + idf_dict = self._idf_dict + else: + idf_dict = defaultdict(lambda: 1.0) + idf_dict[self._tokenizer.sep_token_id] = 0 + idf_dict[self._tokenizer.cls_token_id] = 0 + + all_preds = bert_cos_score_idf( + self._model, + refs, + cands, + self._tokenizer, + idf_dict, + verbose=verbose, + device=self.device, + batch_size=batch_size, + all_layers=self.all_layers, + ).cpu() + + if ref_group_boundaries is not None: + max_preds = [] + for start, end in ref_group_boundaries: + max_preds.append(all_preds[start:end].max(dim=0)[0]) + all_preds = torch.stack(max_preds, dim=0) + + if self.rescale_with_baseline: + all_preds = (all_preds - self.baseline_vals) / (1 - self.baseline_vals) + + out = all_preds[..., 0], all_preds[..., 1], all_preds[..., 2] # P, R, F + + if verbose: + time_diff = time.perf_counter() - start + print(f"done in {time_diff:.2f} seconds, {len(refs) / time_diff:.2f} sentences/sec") + + if return_hash: + out = tuple([out, self.hash]) + + return out + + def plot_example(self, candidate, reference, fname=""): + """ + Args: + - :param: `candidate` (str): a candidate sentence + - :param: `reference` (str): a reference sentence + - :param: `fname` (str): path to save the output plot + """ + + assert isinstance(candidate, str) + assert isinstance(reference, str) + + idf_dict = defaultdict(lambda: 1.0) + idf_dict[self._tokenizer.sep_token_id] = 0 + idf_dict[self._tokenizer.cls_token_id] = 0 + + hyp_embedding, masks, padded_idf = get_bert_embedding( + [candidate], self._model, self._tokenizer, idf_dict, device=self.device, all_layers=False, + ) + ref_embedding, masks, padded_idf = get_bert_embedding( + [reference], self._model, self._tokenizer, idf_dict, device=self.device, all_layers=False, + ) + ref_embedding.div_(torch.norm(ref_embedding, dim=-1).unsqueeze(-1)) + hyp_embedding.div_(torch.norm(hyp_embedding, dim=-1).unsqueeze(-1)) + sim = torch.bmm(hyp_embedding, ref_embedding.transpose(1, 2)) + sim = sim.squeeze(0).cpu() + + r_tokens = [self._tokenizer.decode([i]) for i in sent_encode(self._tokenizer, reference)][1:-1] + h_tokens = [self._tokenizer.decode([i]) for i in sent_encode(self._tokenizer, candidate)][1:-1] + sim = sim[1:-1, 1:-1] + + if self.rescale_with_baseline: + sim = (sim - self.baseline_vals[2].item()) / (1 - self.baseline_vals[2].item()) + + fig, ax = plt.subplots(figsize=(len(r_tokens), len(h_tokens))) + im = ax.imshow(sim, cmap="Blues", vmin=0, vmax=1) + + # We want to show all ticks... + ax.set_xticks(np.arange(len(r_tokens))) + ax.set_yticks(np.arange(len(h_tokens))) + # ... and label them with the respective list entries + ax.set_xticklabels(r_tokens, fontsize=10) + ax.set_yticklabels(h_tokens, fontsize=10) + ax.grid(False) + plt.xlabel("Reference (tokenized)", fontsize=14) + plt.ylabel("Candidate (tokenized)", fontsize=14) + title = "Similarity Matrix" + if self.rescale_with_baseline: + title += " (after Rescaling)" + plt.title(title, fontsize=14) + + divider = make_axes_locatable(ax) + cax = divider.append_axes("right", size="2%", pad=0.2) + fig.colorbar(im, cax=cax) + + # Rotate the tick labels and set their alignment. + plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor") + + # Loop over data dimensions and create text annotations. + for i in range(len(h_tokens)): + for j in range(len(r_tokens)): + text = ax.text( + j, + i, + "{:.3f}".format(sim[i, j].item()), + ha="center", + va="center", + color="k" if sim[i, j].item() < 0.5 else "w", + ) + + fig.tight_layout() + if fname != "": + plt.savefig(fname, dpi=100) + print("Saved figure to file: ", fname) + plt.show() + + def __repr__(self): + return f"{self.__class__.__name__}(hash={self.hash}, batch_size={self.batch_size}, nthreads={self.nthreads})" + + def __str__(self): + return self.__repr__() diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score/utils.py b/mitigating_bias/train/BERTScore/bert_score/bert_score/utils.py new file mode 100644 index 0000000..62e51a1 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score/utils.py @@ -0,0 +1,631 @@ +import sys +import os +import torch +from math import log +from itertools import chain +from collections import defaultdict, Counter +from multiprocessing import Pool +from functools import partial +from tqdm.auto import tqdm +from torch.nn.utils.rnn import pad_sequence +from distutils.version import LooseVersion + +from transformers import BertConfig, XLNetConfig, XLMConfig, RobertaConfig +from transformers import AutoModel, GPT2Tokenizer, AutoTokenizer + +from . import __version__ +from transformers import __version__ as trans_version + +__all__ = [] + +SCIBERT_URL_DICT = { + "scibert-scivocab-uncased": "https://s3-us-west-2.amazonaws.com/ai2-s2-research/scibert/pytorch_models/scibert_scivocab_uncased.tar", # recommend by the SciBERT authors + "scibert-scivocab-cased": "https://s3-us-west-2.amazonaws.com/ai2-s2-research/scibert/pytorch_models/scibert_scivocab_cased.tar", + "scibert-basevocab-uncased": "https://s3-us-west-2.amazonaws.com/ai2-s2-research/scibert/pytorch_models/scibert_basevocab_uncased.tar", + "scibert-basevocab-cased": "https://s3-us-west-2.amazonaws.com/ai2-s2-research/scibert/pytorch_models/scibert_basevocab_cased.tar", +} + + +lang2model = defaultdict(lambda: "bert-base-multilingual-cased") +lang2model.update( + { + "en": "roberta-large", + "zh": "bert-base-chinese", + "tr": "dbmdz/bert-base-turkish-cased", + "en-sci": "allenai/scibert_scivocab_uncased", + } +) + + +model2layers = { + "bert-base-uncased": 9, # 0.6925188074454226 + "bert-large-uncased": 18, # 0.7210358126642836 + "bert-base-cased-finetuned-mrpc": 9, # 0.6721947475618048 + "bert-base-multilingual-cased": 9, # 0.6680687802637132 + "bert-base-chinese": 8, + "roberta-base": 10, # 0.706288719158983 + "roberta-large": 17, # 0.7385974720781534 + "roberta-large-mnli": 19, # 0.7535618640417984 + "roberta-base-openai-detector": 7, # 0.7048158349432633 + "roberta-large-openai-detector": 15, # 0.7462770207355116 + "xlnet-base-cased": 5, # 0.6630103662114238 + "xlnet-large-cased": 7, # 0.6598800720297179 + "xlm-mlm-en-2048": 6, # 0.651262570131464 + "xlm-mlm-100-1280": 10, # 0.6475166424401905 + # "scibert-scivocab-uncased": 8, # 0.6590354319927313 + # "scibert-scivocab-cased": 9, # 0.6536375053937445 + # "scibert-basevocab-uncased": 9, # 0.6748944832703548 + # "scibert-basevocab-cased": 9, # 0.6524624150542374 + 'allenai/scibert_scivocab_uncased': 8, # 0.6590354393124127 + 'allenai/scibert_scivocab_cased': 9, # 0.6536374902465466 + 'nfliu/scibert_basevocab_uncased': 9, # 0.6748945076082333 + "distilroberta-base": 5, # 0.6797558139322964 + "distilbert-base-uncased": 5, # 0.6756659152782033 + "distilbert-base-uncased-distilled-squad": 4, # 0.6718318036382493 + "distilbert-base-multilingual-cased": 5, # 0.6178131050889238 + "albert-base-v1": 10, # 0.654237567249745 + "albert-large-v1": 17, # 0.6755890754323239 + "albert-xlarge-v1": 16, # 0.7031844211905911 + "albert-xxlarge-v1": 8, # 0.7508642218461096 + "albert-base-v2": 9, # 0.6682455591837927 + "albert-large-v2": 14, # 0.7008537594374035 + "albert-xlarge-v2": 13, # 0.7317228357869254 + "albert-xxlarge-v2": 8, # 0.7505160257184014 + "xlm-roberta-base": 9, # 0.6506799445871697 + "xlm-roberta-large": 17, # 0.6941551437476826 + "google/electra-small-generator": 9, # 0.6659421842117754 + "google/electra-small-discriminator": 11, # 0.6534639151385759 + "google/electra-base-generator": 10, # 0.6730033453857188 + "google/electra-base-discriminator": 9, # 0.7032089590812965 + "google/electra-large-generator": 18, # 0.6813370013104459 + "google/electra-large-discriminator": 14, # 0.6896675824733477 + "google/bert_uncased_L-2_H-128_A-2": 1, # 0.5887998733228855 + "google/bert_uncased_L-2_H-256_A-4": 1, # 0.6114863547661203 + "google/bert_uncased_L-2_H-512_A-8": 1, # 0.6177345529192847 + "google/bert_uncased_L-2_H-768_A-12": 2, # 0.6191261237956839 + "google/bert_uncased_L-4_H-128_A-2": 3, # 0.6076202863798991 + "google/bert_uncased_L-4_H-256_A-4": 3, # 0.6205239036810148 + "google/bert_uncased_L-4_H-512_A-8": 3, # 0.6375351621856903 + "google/bert_uncased_L-4_H-768_A-12": 3, # 0.6561849979644787 + "google/bert_uncased_L-6_H-128_A-2": 5, # 0.6200458425360283 + "google/bert_uncased_L-6_H-256_A-4": 5, # 0.6277501629539081 + "google/bert_uncased_L-6_H-512_A-8": 5, # 0.641952305130849 + "google/bert_uncased_L-6_H-768_A-12": 5, # 0.6762186226247106 + "google/bert_uncased_L-8_H-128_A-2": 7, # 0.6186876506711779 + "google/bert_uncased_L-8_H-256_A-4": 7, # 0.6447993208267708 + "google/bert_uncased_L-8_H-512_A-8": 6, # 0.6489729408169956 + "google/bert_uncased_L-8_H-768_A-12": 7, # 0.6705203359541737 + "google/bert_uncased_L-10_H-128_A-2": 8, # 0.6126762064125278 + "google/bert_uncased_L-10_H-256_A-4": 8, # 0.6376350032576573 + "google/bert_uncased_L-10_H-512_A-8": 9, # 0.6579006292799915 + "google/bert_uncased_L-10_H-768_A-12": 8, # 0.6861146692220176 + "google/bert_uncased_L-12_H-128_A-2": 10, # 0.6184105693383591 + "google/bert_uncased_L-12_H-256_A-4": 11, # 0.6374004994430261 + "google/bert_uncased_L-12_H-512_A-8": 10, # 0.65880012149526 + "google/bert_uncased_L-12_H-768_A-12": 9, # 0.675911357700092 + "amazon/bort": 0, # 0.41927911053036643 + "facebook/bart-base": 6, # 0.7122259132414092 + "facebook/bart-large": 10, # 0.7448671872459683 + "facebook/bart-large-cnn": 10, # 0.7393148105835096 + "facebook/bart-large-mnli": 11, # 0.7531665445691358 + "facebook/bart-large-xsum": 9, # 0.7496408866539556 + "t5-small": 6, # 0.6813843919496912 + "t5-base": 11, # 0.7096044814981418 + "t5-large": 23, # 0.7244153820191929 + "vinai/bertweet-base": 9, # 0.6529471006118857 + "microsoft/deberta-base": 9, # 0.7088459455930344 + "microsoft/deberta-base-mnli": 9, # 0.7395257063907247 + "microsoft/deberta-large": 16, # 0.7511806792052013 + "microsoft/deberta-large-mnli": 18, # 0.7736263649679905 + "microsoft/deberta-xlarge": 18, # 0.7568670944373346 + "microsoft/deberta-xlarge-mnli": 40, # 0.7780600929333213 + "YituTech/conv-bert-base": 10, # 0.7058253551080789 + "YituTech/conv-bert-small": 10, # 0.6544473011107349 + "YituTech/conv-bert-medium-small": 9, # 0.6590097075123257 + "microsoft/mpnet-base": 8, # 0.724976539498804 + "squeezebert/squeezebert-uncased": 9, # 0.6543868703018726 + "squeezebert/squeezebert-mnli": 9, # 0.6654799051284791 + "squeezebert/squeezebert-mnli-headless": 9, # 0.6654799051284791 + "tuner007/pegasus_paraphrase": 15, # 0.7188349436772694 + "google/pegasus-large": 8, # 0.63960462272448 + "google/pegasus-xsum": 11, # 0.6836878575233349 + "sshleifer/tiny-mbart": 2, # 0.028246072231946733 + "facebook/mbart-large-cc25": 12, # 0.6582922975802958 + "facebook/mbart-large-50": 12, # 0.6464972230103133 + "facebook/mbart-large-en-ro": 12, # 0.6791285137459857 + "facebook/mbart-large-50-many-to-many-mmt": 12, # 0.6904136529270892 + "facebook/mbart-large-50-one-to-many-mmt": 12, # 0.6847906439540236 + "allenai/led-base-16384": 6, # 0.7122259170564179 + "facebook/blenderbot_small-90M": 7, # 0.6489176335400088 + "facebook/blenderbot-400M-distill": 2, # 0.5874774070540008 + "microsoft/prophetnet-large-uncased": 4, # 0.586496184234925 + "microsoft/prophetnet-large-uncased-cnndm": 7, # 0.6478379437729287 + "SpanBERT/spanbert-base-cased": 8, # 0.6824006863686848 + "SpanBERT/spanbert-large-cased": 17, # 0.705352690855603 + "microsoft/xprophetnet-large-wiki100-cased": 7, # 0.5852499775879524 + "ProsusAI/finbert": 10, # 0.6923213940752796 + "Vamsi/T5_Paraphrase_Paws": 12, # 0.6941611753807352 + "ramsrigouthamg/t5_paraphraser": 11, # 0.7200917597031539 + "microsoft/deberta-v2-xlarge": 10, # 0.7393675784473045 + "microsoft/deberta-v2-xlarge-mnli": 17, # 0.7620620803716714 + "microsoft/deberta-v2-xxlarge": 21, # 0.7520547670281869 + "microsoft/deberta-v2-xxlarge-mnli": 22, # 0.7742603457742682 + "allenai/longformer-base-4096": 7, # 0.7089559593129316 + "allenai/longformer-large-4096": 14, # 0.732408493548181 + "allenai/longformer-large-4096-finetuned-triviaqa": 14, # 0.7365882744744722 + "zhiheng-huang/bert-base-uncased-embedding-relative-key": 4, # 0.5995636595368777 + "zhiheng-huang/bert-base-uncased-embedding-relative-key-query": 7, # 0.6303599452145718 + "zhiheng-huang/bert-large-uncased-whole-word-masking-embedding-relative-key-query": 19, # 0.6896878492850327 + 'google/mt5-small': 8, # 0.6401166527273479 + 'google/mt5-base': 11, # 0.5663956536597241 + 'google/mt5-large': 19, # 0.6430931371732798 + 'google/mt5-xl': 24, # 0.6707200963021145 + 'google/bigbird-roberta-base': 10, # 0.6695606423502717 + 'google/bigbird-roberta-large': 14, # 0.6755874042374509 + 'google/bigbird-base-trivia-itc': 8, # 0.6930725491629892 + 'princeton-nlp/unsup-simcse-bert-base-uncased': 10, # 0.6703066531921142 + 'princeton-nlp/unsup-simcse-bert-large-uncased': 18, # 0.6958302800755326 + 'princeton-nlp/unsup-simcse-roberta-base': 8, # 0.6436615893535319 + 'princeton-nlp/unsup-simcse-roberta-large': 13, # 0.6812864385585965 + 'princeton-nlp/sup-simcse-bert-base-uncased': 10, # 0.7068074935240984 + 'princeton-nlp/sup-simcse-bert-large-uncased': 18, # 0.7111049471332378 + 'princeton-nlp/sup-simcse-roberta-base': 10, # 0.7253123806661946 + 'princeton-nlp/sup-simcse-roberta-large': 16, # 0.7497820277237173 + 'dbmdz/bert-base-turkish-cased': 10, # WMT18 seg en-tr 0.5522827687776142 + 'dbmdz/distilbert-base-turkish-cased': 4, # WMT18 seg en-tr 0.4742268041237113 + 'google/byt5-small': 1, # 0.5100025975052146 + 'google/byt5-base': 17, # 0.5810347173565313 + 'google/byt5-large': 30, # 0.6151895697554877 + 'microsoft/deberta-v3-xsmall': 10, # 0.6941803815412021 + 'microsoft/deberta-v3-small': 4, # 0.6651551203179679 + 'microsoft/deberta-v3-base': 9, # 0.7261586651018335 + 'microsoft/mdeberta-v3-base': 10, # 0.6778713684091584 + 'microsoft/deberta-v3-large': 12, # 0.6927693082293821 + 'khalidalt/DeBERTa-v3-large-mnli': 18, # 0.7428756686018376 +} + + +def sent_encode(tokenizer, sent): + "Encoding as sentence based on the tokenizer" + sent = sent.strip() + if sent == "": + return tokenizer.build_inputs_with_special_tokens([]) + elif isinstance(tokenizer, GPT2Tokenizer): + # for RoBERTa and GPT-2 + if LooseVersion(trans_version) >= LooseVersion("4.0.0"): + return tokenizer.encode( + sent, + add_special_tokens=True, + add_prefix_space=True, + max_length=tokenizer.model_max_length, + truncation=True, + ) + elif LooseVersion(trans_version) >= LooseVersion("3.0.0"): + return tokenizer.encode( + sent, add_special_tokens=True, add_prefix_space=True, max_length=tokenizer.max_len, truncation=True, + ) + elif LooseVersion(trans_version) >= LooseVersion("2.0.0"): + return tokenizer.encode(sent, add_special_tokens=True, add_prefix_space=True, max_length=tokenizer.max_len) + else: + raise NotImplementedError(f"transformers version {trans_version} is not supported") + else: + if LooseVersion(trans_version) >= LooseVersion("4.0.0"): + return tokenizer.encode( + sent, add_special_tokens=True, max_length=tokenizer.model_max_length, truncation=True, + ) + elif LooseVersion(trans_version) >= LooseVersion("3.0.0"): + return tokenizer.encode(sent, add_special_tokens=True, max_length=tokenizer.max_len, truncation=True) + elif LooseVersion(trans_version) >= LooseVersion("2.0.0"): + return tokenizer.encode(sent, add_special_tokens=True, max_length=tokenizer.max_len) + else: + raise NotImplementedError(f"transformers version {trans_version} is not supported") + + +def get_model(model_type, num_layers, all_layers=None): + if model_type.startswith("scibert"): + model = AutoModel.from_pretrained(cache_scibert(model_type)) + elif "t5" in model_type: + from transformers import T5EncoderModel + + model = T5EncoderModel.from_pretrained(model_type) + else: + model = AutoModel.from_pretrained(model_type) + model.eval() + + if hasattr(model, "decoder") and hasattr(model, "encoder"): + model = model.encoder + + # drop unused layers + if not all_layers: + if hasattr(model, "n_layers"): # xlm + assert ( + 0 <= num_layers <= model.n_layers + ), f"Invalid num_layers: num_layers should be between 0 and {model.n_layers} for {model_type}" + model.n_layers = num_layers + elif hasattr(model, "layer"): # xlnet + assert ( + 0 <= num_layers <= len(model.layer) + ), f"Invalid num_layers: num_layers should be between 0 and {len(model.layer)} for {model_type}" + model.layer = torch.nn.ModuleList([layer for layer in model.layer[:num_layers]]) + elif hasattr(model, "encoder"): # albert + if hasattr(model.encoder, "albert_layer_groups"): + assert ( + 0 <= num_layers <= model.encoder.config.num_hidden_layers + ), f"Invalid num_layers: num_layers should be between 0 and {model.encoder.config.num_hidden_layers} for {model_type}" + model.encoder.config.num_hidden_layers = num_layers + elif hasattr(model.encoder, "block"): # t5 + assert ( + 0 <= num_layers <= len(model.encoder.block) + ), f"Invalid num_layers: num_layers should be between 0 and {len(model.encoder.block)} for {model_type}" + model.encoder.block = torch.nn.ModuleList([layer for layer in model.encoder.block[:num_layers]]) + else: # bert, roberta + assert ( + 0 <= num_layers <= len(model.encoder.layer) + ), f"Invalid num_layers: num_layers should be between 0 and {len(model.encoder.layer)} for {model_type}" + model.encoder.layer = torch.nn.ModuleList([layer for layer in model.encoder.layer[:num_layers]]) + elif hasattr(model, "transformer"): # bert, roberta + assert ( + 0 <= num_layers <= len(model.transformer.layer) + ), f"Invalid num_layers: num_layers should be between 0 and {len(model.transformer.layer)} for {model_type}" + model.transformer.layer = torch.nn.ModuleList([layer for layer in model.transformer.layer[:num_layers]]) + elif hasattr(model, "layers"): # bart + assert ( + 0 <= num_layers <= len(model.layers) + ), f"Invalid num_layers: num_layers should be between 0 and {len(model.layers)} for {model_type}" + model.layers = torch.nn.ModuleList([layer for layer in model.layers[:num_layers]]) + else: + raise ValueError("Not supported") + else: + if hasattr(model, "output_hidden_states"): + model.output_hidden_states = True + elif hasattr(model, "encoder"): + model.encoder.output_hidden_states = True + elif hasattr(model, "transformer"): + model.transformer.output_hidden_states = True + # else: + # raise ValueError(f"Not supported model architecture: {model_type}") + + return model + + +def get_tokenizer(model_type, use_fast=False): + if model_type.startswith("scibert"): + model_type = cache_scibert(model_type) + + if LooseVersion(trans_version) >= LooseVersion("4.0.0"): + tokenizer = AutoTokenizer.from_pretrained(model_type, use_fast=use_fast) + else: + assert not use_fast, "Fast tokenizer is not available for version < 4.0.0" + tokenizer = AutoTokenizer.from_pretrained(model_type) + + return tokenizer + + +def padding(arr, pad_token, dtype=torch.long): + lens = torch.LongTensor([len(a) for a in arr]) + max_len = lens.max().item() + padded = torch.ones(len(arr), max_len, dtype=dtype) * pad_token + mask = torch.zeros(len(arr), max_len, dtype=torch.long) + for i, a in enumerate(arr): + padded[i, : lens[i]] = torch.tensor(a, dtype=dtype) + mask[i, : lens[i]] = 1 + return padded, lens, mask + + +def bert_encode(model, x, attention_mask, all_layers=False): + model.eval() + with torch.no_grad(): + out = model(x, attention_mask=attention_mask, output_hidden_states=all_layers) + if all_layers: + emb = torch.stack(out[-1], dim=2) + else: + emb = out[0] + return emb + + +def process(a, tokenizer=None): + if tokenizer is not None: + a = sent_encode(tokenizer, a) + return set(a) + + +def get_idf_dict(arr, tokenizer, nthreads=4): + """ + Returns mapping from word piece index to its inverse document frequency. + + + Args: + - :param: `arr` (list of str) : sentences to process. + - :param: `tokenizer` : a BERT tokenizer corresponds to `model`. + - :param: `nthreads` (int) : number of CPU threads to use + """ + idf_count = Counter() + num_docs = len(arr) + + process_partial = partial(process, tokenizer=tokenizer) + + with Pool(nthreads) as p: + idf_count.update(chain.from_iterable(p.map(process_partial, arr))) + + idf_dict = defaultdict(lambda: log((num_docs + 1) / (1))) + idf_dict.update({idx: log((num_docs + 1) / (c + 1)) for (idx, c) in idf_count.items()}) + return idf_dict + + +def collate_idf(arr, tokenizer, idf_dict, device="cuda:0"): + """ + Helper function that pads a list of sentences to hvae the same length and + loads idf score for words in the sentences. + + Args: + - :param: `arr` (list of str): sentences to process. + - :param: `tokenize` : a function that takes a string and return list + of tokens. + - :param: `numericalize` : a function that takes a list of tokens and + return list of token indexes. + - :param: `idf_dict` (dict): mapping a word piece index to its + inverse document frequency + - :param: `pad` (str): the padding token. + - :param: `device` (str): device to use, e.g. 'cpu' or 'cuda' + """ + arr = [sent_encode(tokenizer, a) for a in arr] + + idf_weights = [[idf_dict[i] for i in a] for a in arr] + + pad_token = tokenizer.pad_token_id + + padded, lens, mask = padding(arr, pad_token, dtype=torch.long) + padded_idf, _, _ = padding(idf_weights, 0, dtype=torch.float) + + padded = padded.to(device=device) + mask = mask.to(device=device) + lens = lens.to(device=device) + return padded, padded_idf, lens, mask + + +def get_bert_embedding(all_sens, model, tokenizer, idf_dict, batch_size=-1, device="cuda:0", all_layers=False): + """ + Compute BERT embedding in batches. + + Args: + - :param: `all_sens` (list of str) : sentences to encode. + - :param: `model` : a BERT model from `pytorch_pretrained_bert`. + - :param: `tokenizer` : a BERT tokenizer corresponds to `model`. + - :param: `idf_dict` (dict) : mapping a word piece index to its + inverse document frequency + - :param: `device` (str): device to use, e.g. 'cpu' or 'cuda' + """ + + padded_sens, padded_idf, lens, mask = collate_idf(all_sens, tokenizer, idf_dict, device=device) + + if batch_size == -1: + batch_size = len(all_sens) + + embeddings = [] + with torch.no_grad(): + for i in range(0, len(all_sens), batch_size): + batch_embedding = bert_encode( + model, padded_sens[i : i + batch_size], attention_mask=mask[i : i + batch_size], all_layers=all_layers, + ) + embeddings.append(batch_embedding) + del batch_embedding + + total_embedding = torch.cat(embeddings, dim=0) + + return total_embedding, mask, padded_idf + + +def greedy_cos_idf(ref_embedding, ref_masks, ref_idf, hyp_embedding, hyp_masks, hyp_idf, all_layers=False): + """ + Compute greedy matching based on cosine similarity. + + Args: + - :param: `ref_embedding` (torch.Tensor): + embeddings of reference sentences, BxKxd, + B: batch size, K: longest length, d: bert dimenison + - :param: `ref_lens` (list of int): list of reference sentence length. + - :param: `ref_masks` (torch.LongTensor): BxKxK, BERT attention mask for + reference sentences. + - :param: `ref_idf` (torch.Tensor): BxK, idf score of each word + piece in the reference setence + - :param: `hyp_embedding` (torch.Tensor): + embeddings of candidate sentences, BxKxd, + B: batch size, K: longest length, d: bert dimenison + - :param: `hyp_lens` (list of int): list of candidate sentence length. + - :param: `hyp_masks` (torch.LongTensor): BxKxK, BERT attention mask for + candidate sentences. + - :param: `hyp_idf` (torch.Tensor): BxK, idf score of each word + piece in the candidate setence + """ + ref_embedding.div_(torch.norm(ref_embedding, dim=-1).unsqueeze(-1)) + hyp_embedding.div_(torch.norm(hyp_embedding, dim=-1).unsqueeze(-1)) + + if all_layers: + B, _, L, D = hyp_embedding.size() + hyp_embedding = hyp_embedding.transpose(1, 2).transpose(0, 1).contiguous().view(L * B, hyp_embedding.size(1), D) + ref_embedding = ref_embedding.transpose(1, 2).transpose(0, 1).contiguous().view(L * B, ref_embedding.size(1), D) + batch_size = ref_embedding.size(0) + sim = torch.bmm(hyp_embedding, ref_embedding.transpose(1, 2)) + masks = torch.bmm(hyp_masks.unsqueeze(2).float(), ref_masks.unsqueeze(1).float()) + if all_layers: + masks = masks.unsqueeze(0).expand(L, -1, -1, -1).contiguous().view_as(sim) + else: + masks = masks.expand(batch_size, -1, -1).contiguous().view_as(sim) + + masks = masks.float().to(sim.device) + sim = sim * masks + + word_precision = sim.max(dim=2)[0] + word_recall = sim.max(dim=1)[0] + + hyp_idf.div_(hyp_idf.sum(dim=1, keepdim=True)) + ref_idf.div_(ref_idf.sum(dim=1, keepdim=True)) + precision_scale = hyp_idf.to(word_precision.device) + recall_scale = ref_idf.to(word_recall.device) + if all_layers: + precision_scale = precision_scale.unsqueeze(0).expand(L, B, -1).contiguous().view_as(word_precision) + recall_scale = recall_scale.unsqueeze(0).expand(L, B, -1).contiguous().view_as(word_recall) + P = (word_precision * precision_scale).sum(dim=1) + R = (word_recall * recall_scale).sum(dim=1) + F = 2 * P * R / (P + R) + + hyp_zero_mask = hyp_masks.sum(dim=1).eq(2) + ref_zero_mask = ref_masks.sum(dim=1).eq(2) + + if all_layers: + P = P.view(L, B) + R = R.view(L, B) + F = F.view(L, B) + + if torch.any(hyp_zero_mask): + print( + "Warning: Empty candidate sentence detected; setting raw BERTscores to 0.", file=sys.stderr, + ) + P = P.masked_fill(hyp_zero_mask, 0.0) + R = R.masked_fill(hyp_zero_mask, 0.0) + + if torch.any(ref_zero_mask): + print("Warning: Empty reference sentence detected; setting raw BERTScores to 0.", file=sys.stderr) + P = P.masked_fill(ref_zero_mask, 0.0) + R = R.masked_fill(ref_zero_mask, 0.0) + + F = F.masked_fill(torch.isnan(F), 0.0) + + return P, R, F + + +def bert_cos_score_idf( + model, refs, hyps, tokenizer, idf_dict, verbose=False, batch_size=64, device="cuda:0", all_layers=False, +): + """ + Compute BERTScore. + + Args: + - :param: `model` : a BERT model in `pytorch_pretrained_bert` + - :param: `refs` (list of str): reference sentences + - :param: `hyps` (list of str): candidate sentences + - :param: `tokenzier` : a BERT tokenizer corresponds to `model` + - :param: `idf_dict` : a dictionary mapping a word piece index to its + inverse document frequency + - :param: `verbose` (bool): turn on intermediate status update + - :param: `batch_size` (int): bert score processing batch size + - :param: `device` (str): device to use, e.g. 'cpu' or 'cuda' + """ + preds = [] + + def dedup_and_sort(l): + return sorted(list(set(l)), key=lambda x: len(x.split(" ")), reverse=True) + + sentences = dedup_and_sort(refs + hyps) + embs = [] + iter_range = range(0, len(sentences), batch_size) + if verbose: + print("computing bert embedding.") + iter_range = tqdm(iter_range) + stats_dict = dict() + for batch_start in iter_range: + sen_batch = sentences[batch_start : batch_start + batch_size] + embs, masks, padded_idf = get_bert_embedding( + sen_batch, model, tokenizer, idf_dict, device=device, all_layers=all_layers + ) + embs = embs.cpu() + masks = masks.cpu() + padded_idf = padded_idf.cpu() + for i, sen in enumerate(sen_batch): + sequence_len = masks[i].sum().item() + emb = embs[i, :sequence_len] + idf = padded_idf[i, :sequence_len] + stats_dict[sen] = (emb, idf) + + def pad_batch_stats(sen_batch, stats_dict, device): + stats = [stats_dict[s] for s in sen_batch] + emb, idf = zip(*stats) + emb = [e.to(device) for e in emb] + idf = [i.to(device) for i in idf] + lens = [e.size(0) for e in emb] + emb_pad = pad_sequence(emb, batch_first=True, padding_value=2.0) + idf_pad = pad_sequence(idf, batch_first=True) + + def length_to_mask(lens): + lens = torch.tensor(lens, dtype=torch.long) + max_len = max(lens) + base = torch.arange(max_len, dtype=torch.long).expand(len(lens), max_len) + return base < lens.unsqueeze(1) + + pad_mask = length_to_mask(lens).to(device) + return emb_pad, pad_mask, idf_pad + + device = next(model.parameters()).device + iter_range = range(0, len(refs), batch_size) + if verbose: + print("computing greedy matching.") + iter_range = tqdm(iter_range) + + with torch.no_grad(): + for batch_start in iter_range: + batch_refs = refs[batch_start : batch_start + batch_size] + batch_hyps = hyps[batch_start : batch_start + batch_size] + ref_stats = pad_batch_stats(batch_refs, stats_dict, device) + hyp_stats = pad_batch_stats(batch_hyps, stats_dict, device) + + P, R, F1 = greedy_cos_idf(*ref_stats, *hyp_stats, all_layers) + preds.append(torch.stack((P, R, F1), dim=-1).cpu()) + preds = torch.cat(preds, dim=1 if all_layers else 0) + return preds + + +def get_hash(model, num_layers, idf, rescale_with_baseline, use_custom_baseline, use_fast_tokenizer): + msg = "{}_L{}{}_version={}(hug_trans={})".format( + model, num_layers, "_idf" if idf else "_no-idf", __version__, trans_version + ) + if rescale_with_baseline: + if use_custom_baseline: + msg += "-custom-rescaled" + else: + msg += "-rescaled" + if use_fast_tokenizer: + msg += "_fast-tokenizer" + return msg + + +def cache_scibert(model_type, cache_folder="~/.cache/torch/transformers"): + if not model_type.startswith("scibert"): + return model_type + + underscore_model_type = model_type.replace("-", "_") + cache_folder = os.path.abspath(os.path.expanduser(cache_folder)) + filename = os.path.join(cache_folder, underscore_model_type) + + # download SciBERT models + if not os.path.exists(filename): + cmd = f"mkdir -p {cache_folder}; cd {cache_folder};" + cmd += f"wget {SCIBERT_URL_DICT[model_type]}; tar -xvf {underscore_model_type}.tar;" + cmd += ( + f"rm -f {underscore_model_type}.tar ; cd {underscore_model_type}; tar -zxvf weights.tar.gz; mv weights/* .;" + ) + cmd += f"rm -f weights.tar.gz; rmdir weights; mv bert_config.json config.json;" + print(cmd) + print(f"downloading {model_type} model") + os.system(cmd) + + # fix the missing files in scibert + json_file = os.path.join(filename, "special_tokens_map.json") + if not os.path.exists(json_file): + with open(json_file, "w") as f: + print( + '{"unk_token": "[UNK]", "sep_token": "[SEP]", "pad_token": "[PAD]", "cls_token": "[CLS]", "mask_token": "[MASK]"}', + file=f, + ) + + json_file = os.path.join(filename, "added_tokens.json") + if not os.path.exists(json_file): + with open(json_file, "w") as f: + print("{}", file=f) + + if "uncased" in model_type: + json_file = os.path.join(filename, "tokenizer_config.json") + if not os.path.exists(json_file): + with open(json_file, "w") as f: + print('{"do_lower_case": true, "max_len": 512, "init_inputs": []}', file=f) + + return filename diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score_cli/__init__.py b/mitigating_bias/train/BERTScore/bert_score/bert_score_cli/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score_cli/score.py b/mitigating_bias/train/BERTScore/bert_score/bert_score_cli/score.py new file mode 100644 index 0000000..10e4abe --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score_cli/score.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python +import os +import argparse +import torch + +import bert_score + + +def main(): + torch.multiprocessing.set_sharing_strategy("file_system") + + parser = argparse.ArgumentParser("Calculate BERTScore") + parser.add_argument( + "--lang", + type=str, + default=None, + help='two-letter abbreviation of the language (e.g., en) or "en-sci" for scientific text', + ) + parser.add_argument( + "-m", "--model", default=None, help="BERT model name (default: bert-base-uncased) or path to a pretrain model", + ) + parser.add_argument("-l", "--num_layers", type=int, default=None, help="use first N layer in BERT (default: 8)") + parser.add_argument("-b", "--batch_size", type=int, default=64, help="batch size (default: 64)") + parser.add_argument("--nthreads", type=int, default=4, help="number of cpu workers (default: 4)") + parser.add_argument("--idf", action="store_true", help="BERT Score with IDF scaling") + parser.add_argument( + "--rescale_with_baseline", action="store_true", help="Rescaling the numerical score with precomputed baselines", + ) + parser.add_argument("--baseline_path", default=None, type=str, help="path of custom baseline csv file") + parser.add_argument("--use_fast_tokenizer", action="store_false", help="whether to use HF fast tokenizer") + parser.add_argument("-s", "--seg_level", action="store_true", help="show individual score of each pair") + parser.add_argument("-v", "--verbose", action="store_true", help="increase output verbosity") + parser.add_argument("-r", "--ref", type=str, nargs="+", required=True, help="reference file path(s) or a string") + parser.add_argument( + "-c", "--cand", type=str, required=True, help="candidate (system outputs) file path or a string", + ) + + args = parser.parse_args() + + if os.path.isfile(args.cand): + with open(args.cand) as f: + cands = [line.strip() for line in f] + + refs = [] + for ref_file in args.ref: + assert os.path.exists(ref_file), f"reference file {ref_file} doesn't exist" + with open(ref_file) as f: + curr_ref = [line.strip() for line in f] + assert len(curr_ref) == len(cands), f"# of sentences in {ref_file} doesn't match the # of candidates" + refs.append(curr_ref) + refs = list(zip(*refs)) + elif os.path.isfile(args.ref[0]): + assert os.path.exists(args.cand), f"candidate file {args.cand} doesn't exist" + else: + cands = [args.cand] + refs = [args.ref] + assert not args.idf, "do not support idf mode for a single pair of sentences" + + all_preds, hash_code = bert_score.score( + cands, + refs, + model_type=args.model, + num_layers=args.num_layers, + verbose=args.verbose, + idf=args.idf, + batch_size=args.batch_size, + lang=args.lang, + return_hash=True, + rescale_with_baseline=args.rescale_with_baseline, + baseline_path=args.baseline_path, + use_fast_tokenizer=args.use_fast_tokenizer, + ) + avg_scores = [s.mean(dim=0) for s in all_preds] + P = avg_scores[0].cpu().item() + R = avg_scores[1].cpu().item() + F1 = avg_scores[2].cpu().item() + msg = hash_code + f" P: {P:.6f} R: {R:.6f} F1: {F1:.6f}" + print(msg) + if args.seg_level: + ps, rs, fs = all_preds + for p, r, f in zip(ps, rs, fs): + print("{:.6f}\t{:.6f}\t{:.6f}".format(p, r, f)) + + +if __name__ == "__main__": + main() diff --git a/mitigating_bias/train/BERTScore/bert_score/bert_score_cli/visualize.py b/mitigating_bias/train/BERTScore/bert_score/bert_score_cli/visualize.py new file mode 100644 index 0000000..dffa3c0 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/bert_score_cli/visualize.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python +import os +import time +import argparse +import torch +from collections import defaultdict + +import bert_score + + +def main(): + torch.multiprocessing.set_sharing_strategy("file_system") + + parser = argparse.ArgumentParser("Visualize BERTScore") + parser.add_argument("--lang", type=str, default="en", help="two-letter abbreviation of the language (e.g., en)") + parser.add_argument("-m", "--model", default=None, help="BERT model name (default: bert-base-uncased)") + parser.add_argument("-l", "--num_layers", type=int, default=None, help="use first N layer in BERT (default: 8)") + parser.add_argument("-v", "--verbose", action="store_true", help="increase output verbosity") + parser.add_argument("-r", "--ref", type=str, required=True, help="reference sentence") + parser.add_argument("-c", "--cand", type=str, required=True, help="candidate sentence") + parser.add_argument( + "-f", "--file", type=str, default="visualize.png", help="name of file to save output matrix in", + ) + parser.add_argument( + "--rescale_with_baseline", action="store_true", help="Rescaling the numerical score with precomputed baselines", + ) + parser.add_argument("--baseline_path", default=None, type=str, help="path of custom baseline csv file") + + args = parser.parse_args() + + bert_score.plot_example( + args.cand, + args.ref, + model_type=args.model, + lang=args.lang, + num_layers=args.num_layers, + fname=args.file, + rescale_with_baseline=args.rescale_with_baseline, + baseline_path=args.baseline_path, + ) + + +if __name__ == "__main__": + main() diff --git a/mitigating_bias/train/BERTScore/bert_score/example/Demo.ipynb b/mitigating_bias/train/BERTScore/bert_score/example/Demo.ipynb new file mode 100644 index 0000000..9f7b652 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/example/Demo.ipynb @@ -0,0 +1,612 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## BERTScore Tutorial" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Installation\n", + "if you have not installed `bert_score`, it is very easy\n", + "simply uncomment the line below to install through pip" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#!pip install bert_score" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.3.1'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# check your installation\n", + "import bert_score\n", + "bert_score.__version__" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### preparation" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# hide the loading messages\n", + "import logging\n", + "import transformers\n", + "transformers.tokenization_utils.logger.setLevel(logging.ERROR)\n", + "transformers.configuration_utils.logger.setLevel(logging.ERROR)\n", + "transformers.modeling_utils.logger.setLevel(logging.ERROR)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib import rcParams\n", + "\n", + "rcParams[\"xtick.major.size\"] = 0\n", + "rcParams[\"xtick.minor.size\"] = 0\n", + "rcParams[\"ytick.major.size\"] = 0\n", + "rcParams[\"ytick.minor.size\"] = 0\n", + "\n", + "rcParams[\"axes.labelsize\"] = \"large\"\n", + "rcParams[\"axes.axisbelow\"] = True\n", + "rcParams[\"axes.grid\"] = True" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Function API" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will first demonstrate how to use the `score` function in `bert_score`, which is what you need to evaluate a set of machine generated outputs." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from bert_score import score" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Inputs to `score` are a list of candidate sentences and a list of reference sentences. " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"hyps.txt\") as f:\n", + " cands = [line.strip() for line in f]\n", + "\n", + "with open(\"refs.txt\") as f:\n", + " refs = [line.strip() for line in f]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's have a look." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'28-year-old chef found dead in San Francisco mall'" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cands[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are now ready to call the score function. Besides candidates and references, we need to speicify the bert model we are using. Since we are dealing with English sentences, we will use the *bert-base-uncased* model." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "calculating scores...\n", + "computing bert embedding.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b4e553330320447684f2ad1c02a674dc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(FloatProgress(value=0.0, max=1.0), HTML(value='')))" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "computing greedy matching.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ee7f80b6121b42baad9bee7e717ea3c4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(FloatProgress(value=0.0, max=1.0), HTML(value='')))" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "done in 0.13 seconds, 74.39 sentences/sec\n" + ] + } + ], + "source": [ + "P, R, F1 = score(cands, refs, lang='en', verbose=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The outputs of the `score` function are Tensors of precision, recall, and F1 respectively. Each Tensor has the same number of items with the candidate and reference lists. Each item in the list is a scalar, representing the score for the corresponding candidates and references." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([0.9834, 0.9782, 0.9162, 0.9589, 0.9675, 0.9680, 0.9602, 0.9663, 0.9438,\n", + " 0.9508])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can take the average of all candidate reference pairs to be the system level score." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "System level F1 score: 0.959\n" + ] + } + ], + "source": [ + "print(f\"System level F1 score: {F1.mean():.3f}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It might also be very interestig to see the distribution of BERTScore." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist(F1, bins=20)\n", + "plt.xlabel(\"score\")\n", + "plt.ylabel(\"counts\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Some contextual embedding models, like RoBERTa, often produce BERTScores in a very narrow range (as shown above, the range is roughly between 0.92 and 1). Although this artifact does not affect the ranking ability of BERTScore, it affects the readability. Therefore, we propose to apply \"baseline rescaling\" to adjust the output scores. More details on this feature can be found in [this post](https://github.com/Tiiiger/bert_score/blob/master/journal/rescale_baseline.md)." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "P, R, F1 = score(cands, refs, lang='en', rescale_with_baseline=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now see that the scores are much more spread out, which makes it easy to compare different examples." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist(F1, bins=20)\n", + "plt.xlabel(\"score\")\n", + "plt.ylabel(\"counts\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `score` function also handles multiple references gracefully. Consider a candidate sentences with 3 references." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "single_cands = ['I like lemons.']\n", + "multi_refs = [['I am proud of you.', 'I love lemons.', 'Go go go.']]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "P_mul, R_mul, F_mul = score(single_cands, multi_refs, lang=\"en\", rescale_with_baseline=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `score` function will return the best score among all the references automatically." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([0.9025])" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F_mul" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To understand a text generation system better, we can visualize the matchings in BERTScore." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "from bert_score import plot_example" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ESwREREREamTLMtajCPDoSpjcHS+LMuylgEhxpjoU5WpZ7D+AOPhaxmvQHdXw3U8vd1dA9ey/ZGvq6mdfPzq1j7OP5Lv7iq4lN1Th3w5v1jFdSsLx9iMu6vgUnZ73RsHqEuJZYXZaRTlZf2uRm0Pireswryz3s7KS59jWdbws9wsBjhQ5vcE52vJVW2gs+0fYLwC8W7l6tmM3ah+E3fXwLX8gtxdA5dr1amxu6vgUltW73R3FVwqJDLc3VVwqbp28Q1Q19L+jxUcc3cVXMrbt27dBAsM9nd3FVyusLDY3VVwmaTPxp9+pSpYhXl4txx71tvlr33jrL6D8Peqe7cGREREREREzkwiju8wPCHW+VqV1MESERERERE5ue+AvzhnE+wFZFmWVWV6IChFUEREREREahUDpnrGiYwxnwODgAhjTALwNOAJYFnWW8APOGYQ3AkcBW46XZnqYImIiIiISJ1kWdY1p1luAXeeTZlKERQREREREakmGsESEREREZHawwCm5n5tgUawREREREREqolGsEREREREpHappkkuzoWaWzMREREREZFaRh0sERERERGRaqIUQRERERERqV00yYWIiIiIiMj5Tx0sERERERGRaqIUQRERERERqUWMZhEUERERERGpC9TBEhERERERqSZKERQRERERkdpFswiKiIiIiIic/9TBEhERERERqSZKERQRERERkdrDoFkERURERERE6gKNYImIiIiISC1iNMmFiIiIiIhIXaAOloiIiIiISDVRimANMKxPayY+eAV2u40Pp//KxA9/LLe8YXQobz19HRGhAWRkHWXchI9ITMsE4Pl7LmF4v7YA/PPdOXw1dzUA7zxzPf27NiMrNw+A257+hPXbE10YVdWGdY1n4t8GYbfZ+HD2RiZOWVFuecP6gbx134VEhPiSkZPPuJdnk3gwF4Drhrbh0Wt6APDPz5fz6bzNBPh6Mm/i2JLtYyIC+WLBFh56e5HrgjqFYZ1jmDiulyPeeduYOH19ueVxEf5MunsAwf7e2G2GJz9ZwZzVCVw9oCnjx7QvWa99fBi9H/yG9XsP8+2TFxEV6ouHzcbSLSmMn/QrxcWWq0M7qT5Nw3jwoubYbYbpa5L5cOm+SusMa1Ofvw5sjGVZbE/N5YnpmwG4d2hT+jULx2YMy3Yf5pU5OwDwsBkeHdGCro1CKbYs3liw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FVwm6bPxFKTu+F1PrNoCGljenW4+6+3ylz6/yrKsbr/nPc9GnR7BsiwrAcdsmydbthno69oaiYiIiIjIKRlcOivg2dIzWCIiIiIiItVEHSwREREREZFqUqdTBEVEREREpBZy4ayAZ6vm1kxERERERKSW0QiWiIiIiIjUIkYjWCIiIiIiInWBOlgiIiIiIiLVRCmCIiIiIiJSu9j0PVgiIiIiIiLnPXWwREREREREqolSBEVEREREpPYwaBZBERERERGRukAdLBERERERkWqiFEEREREREaldjGYRFBEREREROe+pgyUiIiIiIlJNlCIoIiIiIiK1iNEsgiIiIiIiInWBRrBERERERKR20SQXIiIiIiIi5z91sERERERERKqJUgRFRERERKR20SQXIiIiIiIi5z+NYP0B3sEhNB4+2t3VcBmbreY+THguBAZ6ubsKLrf2y6/cXQWXajryEndXwaVCQnzcXQWXysoqcHcVXC4v77i7q+BSdnvdOi95e9ety7bQUF93V8HlPD3rztjHofO4PZ+/kYmIiIiIyPnHGM0iKCIiIiIiUheogyUiIiIiIlJNlCIoIiIiIiK1i2YRFBEREREROf+pgyUiIiIiIlJNlCIoIiIiIiK1i2YRFBEREREROf+pgyUiIiIiIlJNlCIoIiIiIiK1iNEsgiIiIiIiInWBRrBERERERKR20SQXIiIiIiIi5z91sERERERERKqJUgRFRERERKT2MGiSCxERERERkbpAHSwREREREZFqohRBERERERGpRfQ9WCIiIiIiInWCOlgiIiIiIiLVRCmCIiIiIiJSu+iLhkVERERERM5/6mCJiIiIiIhUE6UIioiIiIhI7aJZBEVERERERM5/GsESEREREZHapQZPcqEOVg3Qr3k4j41qhd1m+GpFAu8u3ltu+SMjW9KzSSgAPl52wvy96PXcTwC8fWMXOsYFs3pfJnd8tKZkm15Nw3hweAtsBo4cK+KJrzay/3Cey2I6lb7Nw3l0ZEvsNsPXqxJ5r0K8D49oQY8mYQD4eNoI8/eizwsLAXjrL53pEBfMmn2Z3PnJ2pJtYkJ9eGVsB0L8PNmclM2jX22ksMhyVUin1KtxKOMvaIbdZvhuXTIf/3ag0joXtKrHzX3jsYCdabk8/f1WACIDvXlsRAsig7yxLLh/6gZSsgv4U5cGXNUtlthQX4b/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bl5lWdY5/w6UurMXRUREREREzjF1sERERERERKpJ3RprFhERERGRWs1AyYRZNZFGsERERERERKqJOlgiIiIiIiLVRCmCIiIiIiJSexjnvxpKI1giIiIiIiLVRCNYIiIiIiJSixhNciEiIiIiIlIXqIMlIiIiIiJSTZQiKCIiIiIitYpSBEVEREREROoAdbBERERERESqiVIERURERESkVlGKoIiIiIiISB2gDpaIiIiIiEg1UYqgiIiIiIjUKkoRFBERERERqQPUwRIREREREakmShEUEREREZHawzj/1VAawRIREREREakm6mCJiIiIiIhUE6UIioiIiIhIrWEwmkVQRERERESkLtAI1h9QkFfAnk273V0Nl/Hw8XV3FVyqcNcad1fB5XrdcI27q+BSyxZtcXcVXCquWYy7q+BSRUXF7q6Cy1mWu2vgWscKjru7Ci5VWFj32nRdY7PV3FGZ6vZH27NGsEREREREROoAdbBERERERESqiVIERURERESkVlGKoIiIiIiISB2gDpaIiIiIiEg1UYqgiIiIiIjUKkoRFBERERERqQPUwRIREREREakmShEUEREREZHawzj/1VAawRIREREREakm6mCJiIiIiIhUE6UIioiIiIhIraJZBEVEREREROoAjWCJiIiIiEitYTAawRIREREREakL1MESERERERGpJkoRFBERERGRWkUpgiIiIiIiInWAOlgiIiIiIiLVRCmCIiIiIiJSu9TcDEGNYImIiIiIiFQXdbBERERERESqiTpYIiIiIiJSexjHLIJn+++kRRkz3BizzRiz0xjz6EmWNzTG/GSMWWOMWW+MGXm66qmDJSIiIiIidY4xxg68AYwA2gDXGGPaVFhtAjDFsqzOwNXAm6crVx0sERERERGpi3oAOy3L2m1Z1jHgC2BMhXUsIMj5czCQdLpCNYugiIiIiIjUKtX0RcMxwIEyvycAPSus8www1xhzN+APDD1doRrBEhEREREROblrgA8ty4oFRgIfG2NO2YfSCFYNMKxzHBNv7YvdZvjwxy1M/HptueVxEQFMGj+YYH9v7DbDkx/9xpxV+/Gw2/jfXQPp1CQCD7uNT3/azsSv15RsZ7MZlv7fFSQdOsIVz89ydVhVGtqxAS/f2AObzfDRgh3869uN5ZbHhvvz9p19Cfbzwm4zPP3ZauauTaRhPX9W/utS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MOmt+QA4O+lZ/dUkAIpLKxj/4ncYzJMTOSqDUeOVBfF881AX9Eoxf2cKxzJLmHhjMw6cKrTcMBnesfZ16ULCfN14bHBTEjJLWDSpFwA/bE5mnr3blY77NVgoe8zUZJ6mvbOmaTnV3usPTNY0bbj5Z1dgIab0vyOAH/CypmnrlFIlmqZ5mcvdBgzXNO1+82QXnwONMY1sPapp2tZz5ZVS9wFTgDNACXCvuVN1E/AGphG9LE3TbjA/i/W1eV1lwMOaplklyLuFNdfq33tt599eicoKx5nJzBb8Axxr6lVbiIpwnFQ0Wzh87PqaYvbsWcduGNQ1o/H6qi+Aq6vjTOlvCyVFjvHdYbaSf+LEpQv9L8lOsiw104kAACAASURBVPcW2Fy9gTfbexNsJuWHJ6nIOPa3uknto2O0xWuu/AZGoyD33Zqmdf47v/NK2GUES9O0hud5bx2wrtrPlcBNF/i8V7XXvwK/ml9nAqMuVF7TtDnAnPMs/wP4o8Z7ecAtl66NEEIIIf6/vfuOk6o6/zj+ebbBLp2l9yIqoiBNAQsaLIAolhh7iTXWxPKLsYYkGmNJLIklRmOLvYvYUFBUQAWkSxNpS++97T6/P87dZXZdmuzuFL7v12tfOzP3zsw5c+fOvc89zzlHRESCRE4RFBERERER+QlL4BzBRBvkQkREREREJGkpwBIRERERESkjShEUEREREZGkYombIagWLBERERERkbKiAEtERERERKSMKEVQRERERESSSgJnCKoFS0REREREpKwowBIRERERESkjShEUEREREZHkYRpFUEREREREZK+gAEtERERERKSMKEVQRERERESSTOLmCKoFS0REREREpIyoBUtERERERJKGoUEuRERERERE9goKsERERERERMqIUgRFRERERCSpJHCGoFqwREREREREyooCLBERERERkTKiFEEREREREUkqGkVQRERERERkL6AAS0REREREpIwoRVBERERERJKKJfA4ggqw9oC7s3VrQbyLUWG2bt0a7yJUqIyMva+Bt0qlvesnYfPmves77QUe7yJUKEvkBP1ysrf9bm1YtyHeRahQtVu3incRKlT2QQfEuwgVLu/zwfEuQoXZvGZ1vItQbvauX2IREREREZFytHddrhYRERERkeSXwEkKasESEREREREpIwqwREREREREyohSBEVEREREJKkkcIagWrBERERERETKilqwREREREQkaZiFv0SlFiwREREREZEyogBLRERERESkjChFUEREREREkool8DAXasESEREREREpIwqwREREREREyohSBEVEREREJLkkboagWrBERERERETKigIsERERERGRMqIUQRERERERSSoJnCGoFiwREREREZGyogBLRERERESkjChFUEREREREkoolcI6gWrBERERERETKiFqwREREREQkiRiWwMNcqAVLRERERESkjCjAEhERERERKSNKERQRERERkaRhaJALERERERGRvYJasBLAkfvX4Y6TDyAtzXh15FweHzKz2PLb+rel2z65AGRnppNbLYuDbx1ctLxqpQw+uukIBk9cxIA3JwNwwsENueqY1qSlGUMnL+ae96ZWXIV24qgD6vHn09uTZsZLw2fzyMfTii0fcNpB9Ni3DgDZWRnkVsvigBsHAXDrKe3o1a4BaWnGsO8Xc8dr4wE4qGlNHji/E5Uz0xkyaVHR44mge6va3Hh8G9IM3h67gGeHz/nJOse0rctlR7bEgemL1nLb25Pp3Lwm1x+7T9E6LerkcMubk/l82lK6tKjJ73rtQ2a68f3CNfxl4FTy3SuwVtvXoVE1LjikCWlmDJm+jHcnLiq2vGfr2pzTpRHL128B4KMpSxk6fRkAL553MHNWbgBg6bot3B/tC+0aVOXcLo3JSDNmLlvPv4fPoSAxqkvP/evyx1MPJD3NeHnkHB77ZEax5bef0o7uhftvVjq5VSvR/uYPAZj5QD+mzF8NwPwVG7jkyW8B6NEml1v7tyMzw5gwdxW/f2kc+YlSYaBn27oMOO2gUOcRs3l0cPE633FqO7q3KdyHQ50PuukDABrVyubeszrQsFY2OFzw+EjmLd/AYfvW4ZaTDyDNjPWbtnL9/8Yye+m6Cq9baXq2jdnGI7azjduU2MZ/CNu4Ua1s7jmrA41qVsaBCx//mnnLN/DQ+R05qGlNtuYXMG7OSm5+eTxbE2QbH94ml5v77U96mvH6t/N4ctisYstv6rsfh7aqBUDlrHRqV8mi21+GAvDvCzvRoWkNxsxeyZXPfVf0nOcv60qVrHQAalfNYsK81Vzzv7EVU6Gd6HVQQ+4+rwvpacbzn83gwfcmF1veJDeHRy/rTo2cLNLTjD+9OpbB4+bTqVUuD150CABmxt/eHM+g0fMA+Ocl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egNwQjrhVdHjLdjJMO2V6rfxxuc8VGH1ibdNGxNzhKDy0rBRYoxUV5H2abp31XnEmMRo2a0oniApLBXFEjlBv5xUqZoY6bMVZcHcJTtfKYXkVEuMdPCKkp1TeecrpZi8zwfvfKUUsWnyCxSsW/Szfqg7durin331zW4/r2ZO+mh3L/exFlK6BaswuIpuDyhtmbtPB9rHLLopenwWcGB0+zPgs/Isq4iIiIiIJL+UDrBERERERCTFWGKPIpjqg1yIiIiIiIhUGLVgiYiIiIhI0rDoL1GpBUtERERERKSMKMASEREREREpI0oRFBERERGR5JLAOYJqwRIRERERESkjCrBERERERETKiFIERUREREQkqVgC5wiqBUtERERERKSMKMASEREREREpI0oRFBERERGRpGKJmyGoFiwREREREZGyogBLRERERESkjChFUEREREREkkoCZwiqBUtERERERKSsqAVLRERERESSSwI3YakFS0REREREpIwowBIRERERESkjShEUEREREZGkYgmcI6gWLBERERERkTKiAEtERERERPZKZtbbzKaa2Qwz+0MpyyuZ2SvR8q/NrMXOXlMBloiIiIiIJA0DzHb/7yevY5YOPAL0AQ4AzjKzA0qsdjGwwt33AR4A7tlZ+RRgiYiIiIjI3ugQYIa7z3T3zcDLQP8S6/QHno1uvw70MistXNtGg1zsgc2LZyz98YETZse7HFI+5se7AHEwOt4FEBGR7VoZ7wKIlK3mP/eJY8aM/ig70+r8jKcuLXG/MTA35v484NDtrePuW81sFZBbymsVUYC1B9y9brzLICIiIiKyN3H33vEuw44oRVBERERERPZGeUDTmPtNosdKXcfMMoAawLIdvagCLBERERER2Rt9C7Qxs5ZmlgWcCbxbYp13gQui278Ehri77+hFlSIoIiLlxsyyoo7DIiIiCSXqU3U18BGQDvzX3SeZ2Z+BUe7+LvAU8LyZzQCWE4KwHbKdBGCSoMzMdhY9S/KJ3a5mlubuBfEuk5Sdwm26t+y/ZnYC0JJwwFof7/KUNzM7Eqjt7m/HuywVwczaAa3cfWC8yyIiu8/M2gNL3H1BvMuSapQimETMrJmZ7QPg7r6zISIluZQIrs4GjohzkaQMmdnBwCAzy9kb9t9oIsbHgE8IVwX3BrWAJ82sT7wLUt7MrDJwJPArM+sb7/JU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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_example(cands[0], refs[0], lang=\"en\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similarly, we can apply rescaling to adjust the similarity distribution to be more distinguishable." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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/4s81Tf6T+1/Nm74jf+99QYZ3TPi5ubG+Ilfki9fviSPJz7OxAswcvhQFsyfy61btyhV3Jun+jzNa2+M5v0PPqJ/v2cY/9knGGOYMnU6xpgHNl6wNQ/s8lg3x8tBgG8XLWTjht+4dPEis2dOB+CrqdOp6vvfENDJzd3dnY8/HU+71i0IjwinV++nqOjjw9uj36C6nz9t2rbjyaf60vfJXlSqUIa8efMxc7bt97mijw+dOnehelUf3DO488lnE9JEs+XEXr8jhw/h5o0bPN7N1mqkSNGiLP5uKfny5WPEyNepW7sGACNHvZEqzmdwLuY7d+7QrlVzQkNDCY8Ip9EjTejz9DMATJrwOcuXLcU9gzt58+Vjiv1+lVo5ew3fy6IF8x2DW9yVN29eXhr4CnVr18AYQ/MWrWLtSytgUlPn+ORmjPEG/gYOAXfssydYlvW1MaYiMAXIgW3Ai6GWZUUZms4tRyErc6VeyZnlFDX87WdSOgvJqnnJgvEnesD4Fk+54ZJTwoajqefvhyWHemXS3zktD7b09gxjkrGTvkhSqxPgz86dO+7rpHbL4Wll9k34KJ23N72z07KsJG+Hna5rsCzLOg3EemAtyzoA1EneHImIiIiIyD0ZknVUwIRSHywREREREREXUQFLRERERETERdJ1E0EREREREUmDknFUwIRKvTkTERERERFJY1SDJSIiIiIiaYhRDZaIiIiIiEh6oAKWiIiIiIiIi6iJoIiIiIiIpC1u+jtYIiIiIiIiDzwVsERERERERFxETQRFRERERCTtMGgUQRERERERkfRABSwREREREREXURNBERERERFJW4xGERQREREREXngqYAlIiIiIiLiImoiKCIiIiIiaYjRKIIiIiIiIiLpgWqwREREREQkbdEgFyIiIiIiIg8+FbBERERERERcRE0ERUREREQkbdEgFyIiIiIiIg8+1WAlQrVy3mza+EFKZ0PEZfLWG57SWUhWlze8n9JZEJFEMKm4k7uIpF8qYImIiIiISNphjEYRFBERERERSQ9UwBIREREREXERNREUEREREZG0RaMIioiIiIiIPPhUwBIREREREXERNREUEREREZG0RaMIioiIiIiIPPhUwBIREREREXERNREUEREREZE0xGgUQRERERERkfRANVgiIiIiIpK2aJALERERERGRB58KWCIiIiIiIi6i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iIiIiIg4iCpYIiIiIiIiDqIugiIiIiIiknNYmkVQRERERETkjqAKloiIiIiIiIOoi6CIiIiIiOQYFppFUERERERE5I6gFiwREREREclRsnEDllqwREREREREHEUVLBEREREREQdRF0EREREREclRNMmFiIiIiIjIHUAVLBEREREREQdRF0EREREREclRsnEPQbVgiYiIiIiIOIoqWCIiIiIiIg6iLoIiIiIiIpJzWJpFUERERERE5I6gFqwMuBSbQPjBM1mdDaf54s9DWZ0Fp/q0a42szoLTFSmQJ6uz4FTFO3+e1VlwqjPznsjqLDjV1asmq7PgdJdi4rM6C0514cqdFW/ZolmdAxFJC1WwREREREQkx7DQLIIiIiIiIiJ3BLVgiYiIiIhIDmJpkgsREREREZE7gSpYIiIiIiIiDqIugiIiIiIikqNk4x6CasESERERERFxFFWwREREREREHERdBEVEREREJEfRLIIiIiIiIiJ3AFWwREREREREHERdBEVEREREJOewNIugiIiIiIjIHUEVLBEREREREQdRF0EREREREckxLDSLoIiIiIiIyB1BFSwREREREREHURdBERERERHJUdRFUERERERE5A6gFiwREREREclRsnEDllqwREREREREHEUVLBEREREREQdRF0EREREREclRNMmFiIiIiIjIHUAVLBEREREREQdRF0EREREREck5LM0iKLew9ref6du6Dr1bhDBp7Ccp1k/77kv6t63L/R0bMPS+LhyLPGpf18inFAM6NWJAp0Y8N7iffbkxhrEfvU2fVrW5p00oM74f65RY0iLQvTAfdvbl4y7V6VSjbIr1jSqXYGyvGozsUI2RHarR1Lukfd2U/kH25c809bIvf611Ffvy0T1qMLxJJafEkhYrli/l7pp+hAb68tlH76VYHxMTw8MD+hEa6EubpvU5cviQfd32bX/RrnlDGtUJpHHdYP755x8uXrhAs/q17C/fim68/NzTTozo5owxDB/2JH4+3tQODmDTxo0p0ly4cIHQkCD7q3y5UjwzfJh9/cwZ0wkOqE7NQD/uv9d2Xh8+fJh6tWsSGhJEzUA/vhk7xmkx3UrLkApsGdufbd/cyzM9Q1Ks9yxdiCUju/LnZ31Y90VfWte6C4A8LrkYO6w567/sS9jnfWno72HfplfjKqz/si/rvujLvDc7UbJI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wzDaAH2Bq8Ae4J5pml0Mw8gKjAYKYxlYrjNNs6NhGGWBScAtYAnQ0jTNPIZhpAEmAH7AYcAT6GyaprXHXrJkgOkIHXgREXlU2OXbSV0FuyvW/PukroJdHZjR4+mF/o94Zkm0522J2F350gHs3Lnjue4DyFvE1/xs8pJnfl/rwNw7TdNM9OnH/7cZLEzTnIBlYPTv5RHAI3+kxDTNzUDsfLKPY5bfBponUjVFREREROT/0H/pHiwREREREZFE9X83gyUiIiIiIv/fHPMZwxaawRIREREREbERDbBERERERERsRCmCIiIiIiKSbBiAk+G4SYKawRIREREREbERzWCJiIiIiEiy4rjzV5rBEhERERERsRkNsERERERERGxEKYIiIiIiIpKsOPAzLjSDJSIiIiIiYisaYImIiIiIiNiIUgRFRERERCQZMTAcOEdQM1giIiIiIiI2ogGWiIiIiIiIjShFUEREREREkg0Dx54lcuS6iYiIiIiIJCsaYImIiIiIiNiIUgRFRERERCRZ0VMERURERERE/gM0wBIREREREbERpQiKiIiIiEiy4rgJgprBEhERERERsRnNYImIiIiISPJhOPZDLjTAkgTbGBKR1FWwq/JeWZO6CpLIrt++n9RVsKuMaVIkdRXs6uSlm0ldBbv7e0HvpK6CXeV7Z3pSV8GuZn5SJ6mrYFdVC2VP6iqIPBelCIqIiIiIiNiIZrBERERERCTZMHDsWSJHrpuIiIiIiEiyogGWiIiIiIiIjShFUEREREREkhVHfoqgZrBERERERERsRAMsERERERERG1GKoIiIiIiIJCuOmyCoGSwRERERERGb0QBLRERERETERpQiKCIiIiIiyYoDP0RQM1giIiIiIiK2ohksERERERFJNgzAyYEfc6EZLBERERERERvRAEtERERERMRGlCIoIiIiIiLJih5yISIiIiIi8h+gAZaIiIiIiIiNKEVQRERERESSEQNDTxEUERERERH5/6cBloiIiIiIiI0oRVBERERERJIVPUVQRERERETkP0ADLBERERERERtRiqCIiIiIiCQbBuCkpwiKiIiIiIj8/9MAywGYpknP7t3w8fYisLgvu3ftemy5XTt3EuBfDB9vL3p274ZpmnHWD//+W9KkMIiIiADg6JEjVK5QlkzpUvH9d8MSPY6E2rb+T1rXKUOrWoH8Nu6H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WD6cjqZpHjcM4z3gw5hlW4EMpmm2NgxjIrDYNM3ZMdu4aZpmnBshSpYMMDdu3WHHSEREROQfO09eSeoq2FX1No4xULOXdh+8+fRC/2eGNXCM2U57KF86gJ07dzzXVTQf3xLm9MVrn/l9/i9n3GmaZsA/rw3DcMZy+1ANIAzYDrwRc3vQP2WqAltN04yMGTdUMU2z2ZN+j2Nc/k1kMaPMx16iME3zR+DHxyxv/a/XyfcucxERERER+bdSQIhpmicADMOYATQCrAMs0zT/ilV+C9DyaRv9z9yDJSIiIiIiEosnEPtvvoTFLItPO2DZE9YD/5EZLBERERER+T9i51t0DcNoCQQAlZ9WVgMsERERERH5LwoHcsV6nZPHPPDOMIzqQH+gsmmaT/3L4UoRFBERERGR/6LtQAHDMPIahpESy59yWhi7gGEYxYGfgIamaV5IyEY1gyUiIiIiIsmKYYMcQdM0owzD6AKswPKY9l9N0zxoGMYgYIdpmguBoUB6YFbMY+v/Nk2zYbwbRQMsERERERH5jzJNcymw9F/LBsT6ufqzblMpgiIiIiIiIjaiGSwREREREUlWDDs/RfBZaAZLRERERETERjTAEhERERERsRGlCIqIiIiISLLiwBmCmsESERERERGxFc1giYiIiIhI8mHg0FNYmsESERERERGxEQ2wREREREREbEQpgiIiIiIikqwYDpwjqBksERERERERG9EAS0RERERExEaUIigiIiIiIsmGARiOmyGoGSwRERERERFb0QBLRERERETERpQiKCIiIiIiyYoDZwhqBktERERERMRWNIMlIiIiyVLJvK5JXQW7er/vW0ldBbv64cuJSV0FuxvWYHBSV0FsQAMsERERERFJXhw4R1ApgiIiIiIiIjaiGSwREREREUlWDAeewtIMloiIiIiIiI1ogCUiIiIiImIjShEUEREREZFkxXDcDEHNYImIiIiIiNiKBlgiIiIiIiI2ohRBERERERFJVhw4Q1AzWCIiIiIiIraiAZaIiIiIiIiNKEVQRERERESSFwfOEdQMloiIiIiIiI1ogCUiIiIiImIjShEUEREREZFkwwAMB84R1AyWiIiIiIiIjWiAJSIiIiIiYiNKERQRERERkeTDAMNxMwQ1gyUiIiIiImIrmsESEREREZFkxYEnsDSDJSIiIiIiYisaYImIiIiIiNiI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NwibOGEC3c7ozMoVKxj+8Ufcf+/dTJ4Wsn0XzJ9PWtpCjmm59TC7iZLX7ffENm354v8+p3GDgymWUowHHnyEChUq8Obrr/H1mNH8uXw5r70yEIDnBwykYaNGiajmFvK6DZ93wYX8p+eFNGl0CLuV2I0XXxqEmfH1mNHcd89dlChegpSUFJ7q92yR2GfdcfstzJ41kxRLYf8DDuDJfs8C0Of+e/lz+XKuvepyILRKfzMu8QPV5PU3/eDDj3H5pRfz1BOPY2a8MGAgZsbB9etz+hldadzgYIoXL07fJ/sVirTmnNQ3LS2Nh/r0pm69ehzRLAxFfunlV3LBRT2z3YaBQncMTilWnBMvvZN37roI37yZQ088nUoH1GbMa0+yb+1DqB0TbG3LwukT2KNSFcrvu98W07966RF+GjWMjev/pt95x9KwTReOPiv3KeD5YdOmzVz3v6F89PiFFCtmDBo2kRnz/uDOnicw+edFfPz1DFoeVpN7L22LO3w9dR7XPhYGC9u82bn16eEMf/IizIwpPy/ipaETdvCNiZfXbbj/M0/z1YgvKFG8BOX32osXXvr3FgOF6jyr8N4GC4vt0FZgXxqGaW/q7stiprUCbnT3DtHrksAQQvrfTKA80MvdR5rZWncvG83XBejg7udHg108D9QktGxd5u7fZcxvZucBNwEbgbXAuVFQ1Q54gNCi94e7n2hmewMvRZ/1F3CJu38fW48mTZp6YTgYioiISNHX67OZiS5CgXqi98BEF6HArRi9/f7XRclRzZsyadLEnQqTGjRq4kO//CbXy9WouPskd2+64znzJiEtWO5efRvTRgIjY16vB7Y5pFJGcBU9fxd4N3r+O9Apu/ndfRCw1Z3+3P0T4JMs0/4ETt1xbURERERERILCnCIoIiIiIiKyFSvEOYKFbZALERERERGRpKUAS0REREREJE6UIigiIiIiIknFCm+GoFqwRERERERE4kUBloiIiIiISJwoRVBERERERJJKIc4QVAuWiIiIiIhIvCjAEhERERERiROlCIqIiIiISPIwjSIoIiIiIiKyS1CAJSIiIiIiEidKERQRERERkSRTeHME1YIlIiIiIiISJ2rBEhERERGRpGFokAsREREREZFdggIsERERERGROFGKoIiIiIiIJJVCnCGoFiwREREREZF4UYAlIiIiIiISJ0oRFBERERGRpKJRBEVERERERHYBCrBERERERETiRCmCIiIiIiKSVKwQjyOoAEtEREQkCfRqWzfRRShQvdr2SXQRCtxenfsnuggFZv0vSxNdhHyjFEEREREREZE4UQuWiIiIiIgkl8KbIagWLBERERERkXhRgCUiIiIiIhInShEUEREREZGkUogzBNWCJSIiIiIiEi9qwRIRERERkaRhFh6FlVqwRERERERE4kQBloiIiIiISJwoRVBERERERJKKFeJhLtSCJSIiIiIiEicKsEREREREROJEKYIiIiIiIpJcCm+GoFqwRERERERE4kUBloiIiIiISJwoRVBERERERJJKIc4QVAuWiIiIiIhIvCjAEhERERERiROlCIqIiIiISFKxQpwjqBYsERERERGROFELloiIiIiIJBHDCvEwF2rBEhERERERiRMFWCIiIiIiInGiFEEREREREUkahga5EBERERER2SUowCoE3J3rr72a+vVq0axxA6ZMnrzd+bt07kiTRodkvp42dSotj2pB8yaNOKp5UyaMHw/AihUr6NqlM80aN+DoIw7nx+nT87UeOZXT+nY8+SQOP6whhzWsz1WXX8qmTZsA+PPPPzn5pBM55KDanHzSiaxYsQKAmT//zLFHH8GeZUry+P8eLbD67EhO6zv4nbdp1rgBhzWsz+233pw5ff369Zzdoxv169XimCObs2D+fACWL19O2xOOo2L5slx79ZUFUZUcyel6cHfuvvN2Dj24Do0OPYh+Tz2Zo+U3bdpEi6aNOa1Th3yrQ27ldRu+5+47ada4Ac2bNKJDuzYsXrwYSP7fdHbb8Nk9utG8SSOaN2lE3VrVad6kEQBvvvF65vTmTRpRercUpk2dWmD1yk5e1292+6xk30dv2LCBKy69hEMPrkPDQ+rxwfvvAXDTDddlrsNDD67DvhXLZy7z66+/0qFdGxodehCNGxycuT9LpJzWd/KkSTRtdCj169Xi+muvxt2B7Nfvm2+8TrPGDWja6FBaHXMk30+bVmB12p6c1Pevv/6ic8eTaXhIPQ5rWJ87brsl870FCxbQrs3xNGvcgDbHtyItLQ2AUSO/2mL7LV+2FEM/HFJg9dqenK7jNse3okH9upl1+OOPP7Z4/4P332P3EsakiRO3mP7rr79SsXzZQrOfPvGw/ZjW/0ymP9eDG7s03ur9/SqV5dPeHfmubxfGP9mV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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plot_example(cands[0], refs[0], lang=\"en\", rescale_with_baseline=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Object-oriented API" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In practice, most of the time of calling the `score` function is spent on building the model. In situations when we want to call the `score` function repeatedly, it is better to cache the model in a `scorer` object. Hence, in `bert_score` we also provide an object-oriented API. \n", + "\n", + "The `BERTScorer` class provides the two methods we have introduced above, `score` and `plot_example`." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "from bert_score import BERTScorer" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "scorer = BERTScorer(lang=\"en\", rescale_with_baseline=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "P, R, F1 = scorer.score(cands, refs)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([0.9014, 0.8710, 0.5036, 0.7563, 0.8073, 0.8103, 0.7644, 0.8002, 0.6673,\n", + " 0.7086])" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "F1" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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/4s81Tf6T+1/Nm74jf+99QYZ3TPi5ubG+Ilfki9fviSPJz7OxAswcvhQFsyfy61btyhV3Jun+jzNa2+M5v0PPqJ/v2cY/9knGGOYMnU6xpgHNl6wNQ/s8lg3x8tBgG8XLWTjht+4dPEis2dOB+CrqdOp6vvfENDJzd3dnY8/HU+71i0IjwinV++nqOjjw9uj36C6nz9t2rbjyaf60vfJXlSqUIa8efMxc7bt97mijw+dOnehelUf3DO488lnE9JEs+XEXr8jhw/h5o0bPN7N1mqkSNGiLP5uKfny5WPEyNepW7sGACNHvZEqzmdwLuY7d+7QrlVzQkNDCY8Ip9EjTejz9DMATJrwOcuXLcU9gzt58+Vjiv1+lVo5ew3fy6IF8x2DW9yVN29eXhr4CnVr18AYQ/MWrWLtSytgUlPn+ORmjPEG/gYOAXfssydYlvW1MaYiMAXIgW3Ai6GWZUUZms4tRyErc6VeyZnlFDX87WdSOgvJqnnJgvEnesD4Fk+54ZJTwoajqefvhyWHemXS3zktD7b09gxjkrGTvkhSqxPgz86dO+7rpHbL4Wll9k34KJ23N72z07KsJG+Hna5rsCzLOg3EemAtyzoA1EneHImIiIiIyD0ZknVUwIRSHywREREREREXUQFLRERERETERdJ1E0EREREREUmDknFUwIRKvTkTERERERFJY1SDJSIiIiIiaYhRDZaIiIiIiEh6oAKWiIiIiIiIi6iJoIiIiIiIpC1u+jtYIiIiIiIiDzwVsERERERERFxETQRFRERERCTtMGgUQRERERERkfRABSwREREREREXURNBERERERFJW4xGERQREREREXngqYAlIiIiIiLiImoiKCIiIiIiaYjRKIIiIiIiIiLpgWqwREREREQkbdEgFyIiIiIiIg8+FbBERERERERcRE0ERUREREQkbdEgFyIiIiIiIg8+1WAlQrVy3mza+EFKZ0PEZfLWG57SWUhWlze8n9JZEJFEMKm4k7uIpF8qYImIiIiISNphjEYRFBERERERSQ9UwBIREREREXERNREUEREREZG0RaMIioiIiIiIPPhUwBIREREREXERNREUEREREZG0RaMIioiIiIiIPPhUwBIREREREXERNREUEREREZE0xGgUQRERERERkfRANVgiIiIiIpK2aJALERERERGRB58KWCIiIiIiIi6i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iIiIiIg4iCpYIiIiIiIiDqIugiIiIiIiknNYmkVQRERERETkjqAKloiIiIiIiIOoi6CIiIiIiOQYFppFUERERERE5I6gFiwREREREclRsnEDllqwREREREREHEUVLBEREREREQdRF0EREREREclRNMmFiIiIiIjIHUAVLBEREREREQdRF0EREREREclRsnEPQbVgiYiIiIiIOIoqWCIiIiIiIg6iLoIiIiIiIpJzWJpFUERERERE5I6gFqwMuBSbQPjBM1mdDaf54s9DWZ0Fp/q0a42szoLTFSmQJ6uz4FTFO3+e1VlwqjPznsjqLDjV1asmq7PgdJdi4rM6C0514cqdFW/ZolmdAxFJC1WwREREREQkx7DQLIIiIiIiIiJ3BLVgiYiIiIhIDmJpkgsREREREZE7gSpYIiIiIiIiDqIugiIiIiIikqNk4x6CasESERERERFxFFWwREREREREHERdBEVEREREJEfRLIIiIiIiIiJ3AFWwREREREREHERdBEVEREREJOewNIugiIiIiIjIHUEVLBEREREREQdRF0EREREREckxLDSLoIiIiIiIyB1BFSwREREREREHURdBERERERHJUdRFUERERERE5A6gFiwREREREclRsnEDllqwREREREREHEUVLBEREREREQdRF0EREREREclRNMmFiIiIiIjIHUAVLBEREREREQdRF0EREREREck5LM0iKLew9ref6du6Dr1bhDBp7Ccp1k/77kv6t63L/R0bMPS+LhyLPGpf18inFAM6NWJAp0Y8N7iffbkxhrEfvU2fVrW5p00oM74f65RY0iLQvTAfdvbl4y7V6VSjbIr1jSqXYGyvGozsUI2RHarR1Lukfd2U/kH25c809bIvf611Ffvy0T1qMLxJJafEkhYrli/l7pp+hAb68tlH76VYHxMTw8MD+hEa6EubpvU5cviQfd32bX/RrnlDGtUJpHHdYP755x8uXrhAs/q17C/fim68/NzTTozo5owxDB/2JH4+3tQODmDTxo0p0ly4cIHQkCD7q3y5UjwzfJh9/cwZ0wkOqE7NQD/uv9d2Xh8+fJh6tWsSGhJEzUA/vhk7xmkx3UrLkApsGdufbd/cyzM9Q1Ks9yxdiCUju/LnZ31Y90VfWte6C4A8LrkYO6w567/sS9jnfWno72HfplfjKqz/si/rvujLvDc7UbJI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wzDaAH2Bq8Ae4J5pml0Mw8gKjAYKYxlYrjNNs6NhGGWBScAtYAnQ0jTNPIZhpAEmAH7AYcAT6GyaprXHXrJkgOkIHXgREXlU2OXbSV0FuyvW/PukroJdHZjR4+mF/o94Zkm0522J2F350gHs3Lnjue4DyFvE1/xs8pJnfl/rwNw7TdNM9OnH/7cZLEzTnIBlYPTv5RHAI3+kxDTNzUDsfLKPY5bfBponUjVFREREROT/0H/pHiwREREREZFE9X83gyUiIiIiIv/fHPMZwxaawRIREREREbERDbBERERERERsRCmCIiIiIiKSbBiAk+G4SYKawRIREREREbERzWCJiIiIiEiy4rjzV5rBEhERERERsRkNsERERERERGxEKYIiIiIiIpKsOPAzLjSDJSIiIiIiYisaYImIiIiIiNiIUgRFRERERCQZMTAcOEdQM1giIiIiIiI2ogGWiIiIiIiIjShFUEREREREkg0Dx54lcuS6iYiIiIiIJCsaYImIiIiIiNiIUgRFRERERCRZ0VMERURERERE/gM0wBIREREREbERpQiKiIiIiEiy4rgJgprBEhERERERsRnNYImIiIiISPJhOPZDLjTAkgTbGBKR1FWwq/JeWZO6CpLIrt++n9RVsKuMaVIkdRXs6uSlm0ldBbv7e0HvpK6CXeV7Z3pSV8GuZn5SJ6mrYFdVC2VP6iqIPBelCIqIiIiIiNiIZrBERERERCTZMHDsWSJHrpuIiIiIiEiyogGWiIiIiIiIjShFUEREREREkhVHfoqgZrBERERERERsRAMsERERERERG1GKoIiIiIiIJCuOmyCoGSwRERERERGb0QBLRERERETERpQiKCIiIiIiyYoDP0RQM1giIiIiIiK2ohksERERERFJNgzAyYEfc6EZLBERERERERvRAEtERERERMRGlCIoIiIiIiLJih5yISIiIiIi8h+gAZaIiIiIiIiNKEVQRERERESSEQNDTxEUERERERH5/6cBloiIiIiIiI0oRVBERERERJIVPUVQRERERETkP0ADLBERERERERtRiqCIiIiIiCQbBuCkpwiKiIiIiIj8/9MAywGYpknP7t3w8fYisLgvu3ftemy5XTt3EuBfDB9vL3p274ZpmnHWD//+W9KkMIiIiADg6JEjVK5QlkzpUvH9d8MSPY6E2rb+T1rXKUOrWoH8Nu6H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WD6cjqZpHjcM4z3gw5hlW4EMpmm2NgxjIrDYNM3ZMdu4aZpmnBshSpYMMDdu3WHHSEREROQfO09eSeoq2FX1No4xULOXdh+8+fRC/2eGNXCM2U57KF86gJ07dzzXVTQf3xLm9MVrn/l9/i9n3GmaZsA/rw3DcMZy+1ANIAzYDrwRc3vQP2WqAltN04yMGTdUMU2z2ZN+j2Nc/k1kMaPMx16iME3zR+DHxyxv/a/XyfcucxERERER+bdSQIhpmicADMOYATQCrAMs0zT/ilV+C9DyaRv9z9yDJSIiIiIiEosnEPtvvoTFLItPO2DZE9YD/5EZLBERERER+T9i51t0DcNoCQQAlZ9WVgMsERERERH5LwoHcsV6nZPHPPDOMIzqQH+gsmmaT/3L4UoRFBERERGR/6LtQAHDMPIahpESy59yWhi7gGEYxYGfgIamaV5IyEY1gyUiIiIiIsmKYYMcQdM0owzD6AKswPKY9l9N0zxoGMYgYIdpmguBoUB6YFbMY+v/Nk2zYbwbRQMsERERERH5jzJNcymw9F/LBsT6ufqzblMpgiIiIiIiIjaiGSwREREREUlWDDs/RfBZaAZLRERERETERjTAEhERERERsRGlCIqIiIiISLLiwBmCmsESERERERGxFc1giYiIiIhI8mHg0FNYmsESERERERGxEQ2wREREREREbEQpgiIiIiIikqwYDpwjqBksERERERERG9EAS0RERERExEaUIigiIiIiIsmGARiOmyGoGSwRERERERFb0QBLRERERETERpQiKCIiIiIiyYoDZwhqBktERERERMRWNIMlIiIiyVLJvK5JXQW7er/vW0ldBbv64cuJSV0FuxvWYHBSV0FsQAMsERERERFJXhw4R1ApgiIiIiIiIjaiGSwREREREUlWDAeewtIMloiIiIiIiI1ogCUiIiIiImIjShEUEREREZFkxXDcDEHNYImIiIiIiNiKBlgiIiIiIiI2ohRBERERERFJVhw4Q1AzWCIiIiIiIraiAZaIiIiIiIiNKEVQRERERESSFwfOEdQMloiIiIiIiI1ogCUiIiIiImIjShEUEREREZFkwwAMB84R1AyWiIiIiIiIjWiAJSIiIiIiYiNKERQRERERkeTDAMNxMwQ1gyUiIiIiImIrmsESEREREZFkxYEnsDSDJSIiIiIiYisaYImIiIiIiNiI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NwibOGEC3c7ozMoVKxj+8Ufcf+/dTJ4Wsn0XzJ9PWtpCjmm59TC7iZLX7ffENm354v8+p3GDgymWUowHHnyEChUq8Obrr/H1mNH8uXw5r70yEIDnBwykYaNGiajmFvK6DZ93wYX8p+eFNGl0CLuV2I0XXxqEmfH1mNHcd89dlChegpSUFJ7q92yR2GfdcfstzJ41kxRLYf8DDuDJfs8C0Of+e/lz+XKuvepyILRKfzMu8QPV5PU3/eDDj3H5pRfz1BOPY2a8MGAgZsbB9etz+hldadzgYIoXL07fJ/sVirTmnNQ3LS2Nh/r0pm69ehzRLAxFfunlV3LBRT2z3YaBQncMTilWnBMvvZN37roI37yZQ088nUoH1GbMa0+yb+1DqB0TbG3LwukT2KNSFcrvu98W07966RF+GjWMjev/pt95x9KwTReOPiv3KeD5YdOmzVz3v6F89PiFFCtmDBo2kRnz/uDOnicw+edFfPz1DFoeVpN7L22LO3w9dR7XPhYGC9u82bn16eEMf/IizIwpPy/ipaETdvCNiZfXbbj/M0/z1YgvKFG8BOX32osXXvr3FgOF6jyr8N4GC4vt0FZgXxqGaW/q7stiprUCbnT3DtHrksAQQvrfTKA80MvdR5rZWncvG83XBejg7udHg108D9QktGxd5u7fZcxvZucBNwEbgbXAuVFQ1Q54gNCi94e7n2hmewMvRZ/1F3CJu38fW48mTZp6YTgYioiISNHX67OZiS5CgXqi98BEF6HArRi9/f7XRclRzZsyadLEnQqTGjRq4kO//CbXy9WouPskd2+64znzJiEtWO5efRvTRgIjY16vB7Y5pFJGcBU9fxd4N3r+O9Apu/ndfRCw1Z3+3P0T4JMs0/4ETt1xbURERERERILCnCIoIiIiIiKyFSvEOYKFbZALERERERGRpKUAS0REREREJE6UIigiIiIiIknFCm+GoFqwRERERERE4kUBloiIiIiISJwoRVBERERERJJKIc4QVAuWiIiIiIhIvCjAEhERERERiROlCIqIiIiISPIwjSIoIiIiIiKyS1CAJSIiIiIiEidKERQRERERkSRTeHME1YIlIiIiIiISJ2rBEhERERGRpGFokAsREREREZFdggIsERERERGROFGKoIiIiIiIJJVCnCGoFiwREREREZF4UYAlIiIiIiISJ0oRFBERERGRpKJRBEVERERERHYBCrBERERERETiRCmCIiIiIiKSVKwQjyOoAEtEREQkCfRqWzfRRShQvdr2SXQRCtxenfsnuggFZv0vSxNdhHyjFEEREREREZE4UQuWiIiIiIgkl8KbIagWLBERERERkXhRgCUiIiIiIhInShEUEREREZGkUogzBNWCJSIiIiIiEi9qwRIRERERkaRhFh6FlVqwRERERERE4kQBloiIiIiISJwoRVBERERERJKKFeJhLtSCJSIiIiIiEicKsEREREREROJEKYIiIiIiIpJcCm+GoFqwRERERERE4kUBloiIiIiISJwoRVBERERERJJKIc4QVAuWiIiIiIhIvCjAEhERERERiROlCIqIiIiISFKxQpwjqBYsERERERGROFELloiIiIiIJBHDCvEwF2rBEhERERERiRMFWCIiIiIiInGiFEEREREREUkahga5EBERERER2SUowCoE3J3rr72a+vVq0axxA6ZMnrzd+bt07kiTRodkvp42dSotj2pB8yaNOKp5UyaMHw/AihUr6NqlM80aN+DoIw7nx+nT87UeOZXT+nY8+SQOP6whhzWsz1WXX8qmTZsA+PPPPzn5pBM55KDanHzSiaxYsQKAmT//zLFHH8GeZUry+P8eLbD67EhO6zv4nbdp1rgBhzWsz+233pw5ff369Zzdoxv169XimCObs2D+fACWL19O2xOOo2L5slx79ZUFUZUcyel6cHfuvvN2Dj24Do0OPYh+Tz2Zo+U3bdpEi6aNOa1Th3yrQ27ldRu+5+47ada4Ac2bNKJDuzYsXrwYSP7fdHbb8Nk9utG8SSOaN2lE3VrVad6kEQBvvvF65vTmTRpRercUpk2dWmD1yk5e1292+6xk30dv2LCBKy69hEMPrkPDQ+rxwfvvAXDTDddlrsNDD67DvhXLZy7z66+/0qFdGxodehCNGxycuT9LpJzWd/KkSTRtdCj169Xi+muvxt2B7Nfvm2+8TrPGDWja6FBaHXMk30+bVmB12p6c1Pevv/6ic8eTaXhIPQ5rWJ87brsl870FCxbQrs3xNGvcgDbHtyItLQ2AUSO/2mL7LV+2FEM/HFJg9dqenK7jNse3okH9upl1+OOPP7Z4/4P332P3EsakiRO3mP7rr79SsXzZQrOfPvGw/ZjW/0ymP9eDG7s03ur9/SqV5dPeHfmubxfGP9mV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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "scorer.plot_example(cands[0], refs[0])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/mitigating_bias/train/BERTScore/bert_score/example/demo.py b/mitigating_bias/train/BERTScore/bert_score/example/demo.py new file mode 100644 index 0000000..a85147d --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/example/demo.py @@ -0,0 +1,10 @@ +from bert_score import score + +with open("hyps.txt") as f: + cands = [line.strip() for line in f] + +with open("refs.txt") as f: + refs = [line.strip() for line in f] + +(P, R, F), hashname = score(cands, refs, lang="en", return_hash=True) +print(f"{hashname}: P={P.mean().item():.6f} R={R.mean().item():.6f} F={F.mean().item():.6f}") diff --git a/mitigating_bias/train/BERTScore/bert_score/example/hyps.txt b/mitigating_bias/train/BERTScore/bert_score/example/hyps.txt new file mode 100644 index 0000000..41be794 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/example/hyps.txt @@ -0,0 +1,10 @@ +28-year-old chef found dead in San Francisco mall +A 28-year-old chef who recently moved to San Francisco was found dead in the staircase of a local shopping center. +The victim's brother said he cannot imagine anyone who would want to harm him,"Finally, it went uphill again at him." +The corpse, found Wednesday morning in the Westfield Mall, was identified as the 28-year-old Frank Galicia from San Francisco, the Justice Department said in San Francisco. +The San Francisco Police Department said the death was classified as murder and the investigation is on the running. +The victim's brother, Louis Galicia, told the ABS broadcaster KGO in San Francisco that Frank, who formerly worked as a cook in Boston, had his dream job as a cook at the Sons & Daughters restaurant in San Francisco six months ago. +A spokesman for the Sons & Daughters said they were "shocked and destroyed on the ground" over his death. +"We are a small team that works like a close family and we are going to miss him painfully," said the spokesman. +Our thoughts and condolences are in this difficult time at Franks's family and friends. +Louis Galicia admitted that Frank initially lived in hostels, but that "things for him finally went uphill." diff --git a/mitigating_bias/train/BERTScore/bert_score/example/hyps_long.txt b/mitigating_bias/train/BERTScore/bert_score/example/hyps_long.txt new file mode 100644 index 0000000..ada5e74 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/example/hyps_long.txt @@ -0,0 +1,3004 @@ +28-year-old chef found dead in San Francisco mall +A 28-year-old chef who recently moved to San Francisco was found dead in the staircase of a local shopping center. +The victim's brother said he cannot imagine anyone who would want to harm him,"Finally, it went uphill again at him." +The corpse, found Wednesday morning in the Westfield Mall, was identified as the 28-year-old Frank Galicia from San Francisco, the Justice Department said in San Francisco. +The San Francisco Police Department said the death was classified as murder and the investigation is on the running. +The victim's brother, Louis Galicia, told the ABS broadcaster KGO in San Francisco that Frank, who formerly worked as a cook in Boston, had his dream job as a cook at the Sons & Daughters restaurant in San Francisco six months ago. +A spokesman for the Sons & Daughters said they were "shocked and destroyed on the ground" over his death. +"We are a small team that works like a close family and we are going to miss him painfully," said the spokesman. +Our thoughts and condolences are in this difficult time at Franks's family and friends. +Louis Galicia admitted that Frank initially lived in hostels, but that "things for him finally went uphill." +"He found an apartment, he had a girlfriend," shared Louis Garcia KGO. +Louis Galicia said he could not imagine anyone who would want to hurt his younger brother. +He was a friendly person with a big heart. +His way to connect with his family was to always give us something to cook, prepare us dinner," said Louis Galicia. +He never wanted to take part in any kind of controversy. +He was the brother who swam with the electricity. +"In everything that goes wrong in the world, he was this unvarnished diamond that brightened bright every day," he said. +Anyone with information on the case will be asked to call the SFPD's execution phone under the number 415-575-4444. +Jennifer Aniston: I am always put in drawers +Jennifer Aniston does not always have to be perfect or successful. +That is what the Hollywood star clearly made clear in an interview now. +"I will always be plugged into drawers or glued from outside labels, which with me and reality usually have little to do with it." +"I do not have the desire to always be perfect and successful." +"To be honest, these things are rather snuff to me." +Jennifer Aniston (47) can only laugh that she is considered "miss Perfect" as she explains in the current "cosmopolitan." +After all, the actress spends her time at home, TV with loose Dutt and Mexican food, the magazine says. +To the white glut, she raises the question of the child's wish: "we women do not have to be married or have children to be perfect," according to the Hollywood star. +In her new film,"Mother's Day - Love is Not a Children's Game", Aniston is seen as a single mother of two sons. +The film runs with us from the 25th of August. +Golfer Langer gets the sports pyramid +His experience on the horse is manageable. +At the end of a golf tournament in South Africa, Bernhard Langer was looking for a bit of variation on the beach with some colleagues. +It was a premiere for the 58-year-old. +CHIO: "golden sports pyramid" for Bernhard Langer +After a few minutes, the horses remembered their holiday, they hunted in the fast gallop home to the fodder troughs. +One kilometer at this pace, I was scared. +"It was not a good experience," Langer says. +And so the riding career ended up again. +On Saturday, Germany's best golfer of all time - 101 tournament victories - was again close to horses. +He left with his family over the plant of the ALRV, on a horse he did not even bother for photo purposes. +Langer was the first time in Aachen and also with the CHIO. +The reason was quite convincing. +The German sports aid was given to the man from Anhausen as part of a small gala the Golden Sports pyramid. +At awards, the likeable athlete is not lacking. +Federal Cross of Merit, Silver's laurel, Champions Tour Player of the year... +Even the British Queen has already adored him. +Langer is the 18th winner of the sports pyramid. +In Aachen, he met the first prize winner Hans Günter Winkler on Saturday. +"This award means a lot to me," says Langer,"because it is awarded not only for sporting successes, but also for social engagement." +For decades, Langer has been promoting the young. +And so he also gave the prize money of 25,000 euros. +With 15 other outstanding athletes, the two-time U.S. Masters champion was inducted into the "Hall of Fame of German Sports" on Saturday. +The performances include the athletes Hartwig Gauder and Harald Schmitt, the Turner Eberhard Gienger, the Fechter Cornelia Hanisch, Alexander Pusch and Arnd Schmitt, the rowers Peter-Michael Kolbe, the Judoka Frank Wieneke, the jumping rider Alwin Schockemöhle and posthumously the handballer Erhard Wunderlich. +Many of these sports legends came to Aachen on Saturday. +After the official part, the illustrious society wandered into the Springstadion, where the Lavazza Prize was running. +Bernhard Langer kept distance from the big animals. +Clinton's and Trump's economic policies in comparison: it's all about the money +Investing in infrastructure and preventing the trade agreement TTP - that is what both Clinton and Trump want. +However, the two US presidential candidates are divided on fiscal and energy policy, as well as on a fundamental issue. +The differences in economic policy between Donald Trump and Hillary Clinton are based on a fundamental, more philosophical difference. +The, about the role of the state. +Trump wants to keep those in doubt rather small and warns of how the state can hurt the economy - with taxes and regulations. +Clinton wants to tax the economy to death and regulate it to death, he says. +He himself would be very different, claims Trump. +He will drive back regulation massively, and he is pushing for far-reaching tax reform with lower tax rates - for private individuals and for businesses. +Clinton, however, says the state has certain tasks to perform, it has disadvantaged opportunities and needs money for it. +That is why taxes would be increased for the rich, she says. +Interestingly, both are very close to the subject of infrastructure. +It must be invested in, say, Trump and Clinton almost word-for-word. +The Democratic candidate even announces the biggest investment in new jobs since World War II. +Government investment programs in infrastructure are classic democratic policies, and are strongly opposed by Republicans ' state-critical teaparty-wing. +So there could be partisan discussions on Trump. +The differences in energy and climate policy are clearer. +Trump wants to build coal-fired power plants and boost coal production in the US. +Oil production is also expected to be possible in areas protected so far, and the Paris climate agreement is to be terminated. +Clinton, on the other hand, wants to explicitly expand renewable energy with her investment program, and demands that "a country will become the superpower of clean energy and create millions of jobs." +"It will probably be either China, Germany or America - I want us to be." +But not only in terms of infrastructure, but also in international trade agreements, the two competitors are not too far apart. +TPP, the trans-Pacific trade agreement, both do not want to sign. +At the same time, both do not want to isolate the US from international trade, but simply to better protect American jobs. +They are also supposed to be paid better, asking for Clinton. +The current minimum wage of $7.25 is a starvation wage. +It wants to raise it to $15 an hour. +What Trump wants to do on this issue is not entirely clear: once, he says, the minimum wage must be up, then he says he should not be changed. +But the big debate in the coming months is likely to be more about the fiscal policy of the two camps. +On the one hand, Trump, who wants to relieve the economy and citizens in order to boost growth. +His critics believe that this would only increase the budget deficit. +On the other hand, Clinton, who at least wants to ask the wealthy to pay more tax, and whose critics say more taxes are not the solution, either. +Escape: "any fleeing woman has experience of sexual violence" +Sexual violence is part of everyday life for women who flee on their own. +When they arrive in Germany, they are often traumatized. +A house offers refuge. +In a large kitchen, there are four women. +Each has a baby, which is no more than a year old. +One has put her little son in the arm. +He looks with big eyes curious in the room. +His mother stares at the table plate. +Until she realizes she is being watched. +She smiles short and kisses the little one. +The scene looks normal. +Until you talk to Katrin Bahr. +She is a division manager of Condrobs, a carrier for social assistance in Bavaria, and deals with, among other things, women on the run. +The four women in the kitchen are fleeing. +They live in the north of Munich in one of the few decentralized accommodation for women and their children in Bavaria. +In January, Condrobs opened the facility together with Pro Familia and the Munich Women's Aid. +It has recently been officially opened. +60 people live there - about 40 women and 20 children. +Men do not exist - even as a visitor. +The exception is a guard at the door. +"It is not an exaggeration to say that any woman who arrives here has made on her escape experiences with sexual violence," Bahr says. +"Men are fleeing because of wars because they are persecuted politically because they are threatening torture or death or because their families send them as hopefuls to Europe," she tells. +In women, there are other reasons for the escape: "many are stealing from it because they see no other way out." +In their homeland, they have experience of sexual violence, forced marriages, honour killings, slavery or forced prostitution. +That is what drives them. +On the run, that goes on. +"That smugglers, for example, demand a sexual act for a bottle of water is not a rarity," says Bahr. +And the women are alone, they are not protected by their families. +Anyone who thinks that the end as soon as they arrive in Germany is mistaken, tells Bahr. +Here, too, single women in refugee camps would often be regarded as inferior and, at worst, abused. +That means that about 90 percent of the women who live in the accommodation in the Munich North are traumatized, she estimated. +"Some of the children certainly did not come up voluntarily." +Many women are so used to saying nothing. +"Or they do not dare to speak openly about the experience because the shame is too big." +As they often do not know how to help, there is a need for more accommodation only for them, Bahr asks. +In Bavaria, the seven district governments are responsible for accommodating refugees. +On the question of whether they knew of a project similar to that in Munich in their area of responsibility, some answer no. +In Oberpfalz and Oberfranken, for example, there is no such thing in government accommodation. +Even in Swabia, abandoned women are not being accommodated separately, says Karl-Heinz Meyer, press officer of the government. +In Oberbayern, Unter- und Mittelfranken, there are only for single women and their children in some dormitories or their own houses. +The exception is Lower Bavaria, where there are two central accommodation exclusively for women. +The European Parliament's Committee on Women's Rights and Gender Equality also calls for women to be separated from men. +In a study published for the committee, it said: "it is very important for men and women to be accommodated separately." +"Lacking the privacy, or getting men and women together, it can turn into - perpetual - violence against women." +In particular, the laundry rooms should be separated and easily accessible to women, the study says. +The way in which women feel this need for protection can be seen at the arrival of the house in Munich. +"Since it has been around, that there is us, we have a long waiting list," Bahr says. +You could easily set up a second house. +Assistant doctors strike: calls for new industrial action +Deputy Assistant doctors have called on their union to approve new labor action in their disputes over a new contract. +The Junior Doctors Committee (JDC) of the British Medical Association (BMA) has called on its entire council to approve more industrial action from early September. +The JDC said that ministers had failed to address concerns about the treaty. +Assistant doctors and medical students voted in July on the rejection of a contract that was agreed with the BMA. +It was rejected by 58 percent of its members who voted in the elections. +In a letter to members posted on Twitter on Thursday evening, JDC's chairwoman Ellen McCourt said the government had remained "persistently calm" on problems, adding that the treaty was rejected. +She said: "in view of this, the JDC board voted to reject the proposed new treaty in full and called for official renegotiation to all your concerns." +In response to the government's silence, the JDC board today submitted a formal request for a special meeting of the BMA Council to approve an ongoing program of escalating labor action, which begins in early September. +The disputes caused assistant doctors to strike six times this year, the first total outages in the history of the NHS. +The head of the BMA assistant physician Dr Johann Malawana resigned after the election to reject the agreed terms of the contract, which had been recommended by the BMA. +He told BMA members during the meetings, which took place before the vote by 54,000 assistant doctors and medical students, that the treaty was beneficial and should be adopted. +After the vote, Health Secretary Jeremy Hunt said the contract for doctors in England would be forcibly introduced. +Russia and Turkey: an "alliance of outsiders"? +It was a gesture that ended a crisis. +Leaders of Russia and Turkey met Tuesday to give up their hands and declare an official end to the eight-month war of words and economic sanctions. +But when Vladimir Putin receives his Turkish counterpart in the gold-plated hall of St Petersburg Palace, I cannot deny the impression that Ankara wants this reconciliation most. +There was the handshake, yes. +But Putin's smile acted narrowly, and he barely radiated warmth, even for his restrained conditions. +Recep Tayyip Erdogan, on the other hand, repeatedly spoke of his "dear friend" Putin - according to a report full five times. +I could not count it any more. +He also promised that relations with Russia would not only return to their old pre-crisis levels, but will even improve. +The next day, a newspaper described that Erdogan had behaved as if something bad had never happened. +To me, his enthusiasm seemed to indicate the opposite. +But a sustainable coolness, broadcast by Putin, showed that Russia's head of state had forgotten nothing. +Rather, the cause of the crisis was the first thing he mentioned in his introductory remarks: the downing of a Russian fighter plane on the Syrian border by Turkey. +Moscow's reaction at the time was wrecked. +Putin split out and accused Ankara of having fallen behind Russia. +The offense was even greater as it was committed by an alleged friend. +Rebuilding the veto will be difficult, if not impossible. +Public opinion in Russia has changed since Nov. +For months, state-controlled media conducted a fierce, full attack on Ankara. +At one time, it seemed the Turks were to blame for everything. +Most serious were allegations by senior officials that Erdogan's own family had benefited from the illegal trade in oil in areas of Syria controlled by the so-called Islamic State. +He vehemently denied this. +But in St.Petersburg, the official message was that it was time to look forward. +After all, that meeting took place only because Putin received the apology from President Erdogan, which he wanted to hear. +Russia was a kind of victory. +For Ankara, the benefits of a ceasefire are clear. +Erdogan primarily needs all the friends he can get after being unveiled almost by his office last month in a failed coup. +Repeated terrorist attacks on Turkey have also shaken him. +But there are also economic motives. +Russian sanctions have hit Turkey hard - particularly the ban on charter flights, which typically bring several million Russian tourists to the Turkish coast each year. +The number has fallen by almost 90%. +In Russia, tour operators and charter companies will be relieved when flights resume. +They are counting on a late-season rush to the Mediterranean. +This week, state television forecast cheaper fruit and vegetables once Turkish farm imports are allowed again. +As a report in Vedemosti put it: "tourists there long, tomatoes here long." +But the visit had an additional political value for Moscow. +Ankara is angry at the West as it considers its response to the attempted takeover as a weak response. +To this end, the ongoing resentment comes at the snail's pace of EU accession negotiations and Putin - eager to take advantage of the cool mood and reduce Turkey's relationship with the West. +The Russian leader certainly won a bonus in Ankara for calling for support for the elected authorities after the attempted coup. +This is, of course, a matter of course for Moscow, which itself has a deep-seated fear of regime change. +The summit in this glamorous palace on the sea made it possible for Russia and Turkey to depict, as an analyst once told me, the "alliance of outsiders": two countries that feel wronged by the West and feel badly treated and are now allied. +However, despite public reconciliation, there are still major differences between the two. +The biggest difference is Syria, where Moscow recently gave itself the role as a peacemaker, but where Russia and Turkey support opposing sides. +It could be significant that after nearly three hours of initial talks, both presidents said at the press conference that they had not even jumped the issue. +Turkey's president deliberately avoided answering a question about their differences, while Putin chose to emphasize them. +There is no clear consensus on where to find a common denominator on Syria. +But after months of open hostilities - and given the potential for a complete disaster, when NATO member Turkey shot down the Russian fighter jet - it is certainly better that the two heads of state at least talk to each other again. +Royal Bank of Scotland for customers outside Scotland no longer available +The RBS brand is about to be reduced to a back-office role, according to the bank's CEO. +Royal Bank of Scotland will no longer be available to customers outside Scotland. +Ross McEwan told BBC Scotland that the RBS brand was linked to the bank's global ambitions. +The bank has since distanced itself when it almost collapsed and had to be rescued eight years ago. +During that time, brand strategist RBS has used "RBS" to protect other end-consumer financial brands. +She supported international sport with millions of pounds in sponsorship, from Six Nations rugby to Wimbledon winner Andy Murray. +But now it has decided to put more national brands in focus. +Royal Bank of Scotland will only be available to customers in Scotland, but will not be initialized. +In England and Wales, all RSB references, the decentralised headquarters and the stock exchange listing will change to NatWest. +The Ulster Bank brand is already used for customers in the Republic of Ireland and Northern Ireland. +There are other, smaller brands for retail banking that will be given more prominence - Coutts, Adam & Co, Drummond and Holt's Military Bank. +McEwan was interviewed during a sightseeing tour of customers and staff in Inverness-shire. +He told BBC Scotland: "the RSB brand will become our investor brand as well as the brand under which our staff will be busy as we become more a bank of brands now." +As the bank itself became a global brand, RBS became a global brand. +I am now saying that we are not pursuing global objectives, but local objectives. +Each of these brands will stand in their own communities for something completely different and our employees will work with the customers under these brands. +RBS has already said it will no longer continue its Six Nations sponsorship and that it will increase the perceptibility of the various brands in its sports sponsorship. +"It is time for us to develop into the bank of brands, because how do we focus on inside (we have asked) to make this a better bank for customers?" said the CEO. +It would have been very cynical three years ago if we had said that we would be a great bank for our customers and have launched these brands. +But with our work, the focus on customer needs and not our own, I think we will see many changes. +We can launch these brands again, so I think the time has come. +Frankie Dettori reaches on Predilection his 3.000th win at Newmarket +Dettori sprays champagne after a double at Newmarket that brings him 3.000th win +Jockey Frankie Dettori secured his 3000th British win at Newmarket on Friday. +He set a milestone on Predilection, which is trained by John Gosden, on his local circuit with his second win of the night. +The 45-year-old Italian is the sixth jockey to reach the milestone in the flat race. +He follows Sir Gordon Richards, Doug Smith, Lester Piggott, Pat Eddry and Willie Carson. +The three-time winner Dettori, who won before Ghayyar, said: "it is something special." +I am very emotional because my family is here too +I am very happy that it happened at Newmarket because I landed here 30 years ago. +It is not a big meeting, it is not Royal Ascot - it is a banal Friday night with 20,000 people. +I am relieved and very humble. +Dettori takes the jubilation as he takes on preaching the victory +Two jockeys have reached the milestone in the impeachment race - jockey Richard Johnson and retired 20-time winner Sir Anthony McCoy, who scored more than 4,300 victories in a record-breaking career. +Lester Piggott, the nine-time Derby winner, had 4.493 career victories +Frankie is one of the best jockey of modernity and it is no surprise that he has reached this milestone that few have achieved before him. +He has style and is strong, but it is his tactical intellect that distinguishes him from the others in the weight control room. +He is a fantastic ambassador for race, his enthusiasm and charisma has excited fans for years for this sport. +I told Frankie a couple of weeks ago at Epsom that he had already picked up 6000 profits if he was not just a weekend and big-tournament jockey! +Frankie has already won almost 30 years of winners in GB, which is great. +He has a lively personality, which is good for a British race, but beyond that, he is an incredible jockey. +Frankie Dettori celebrated the milestone with a typical Flying Dismount +From Flying finishes to Flying Dismounts, Frankie Dettori has been the flagship of the British flat race for two decades. +It was nerve-wracking. +A whole series of major tournament wins, including his famous "glorious Seven" in 1996 in Ascot, but he also survived a plane crash and received a drug ban. +Three years ago, he initially had trouble returning from his six-month lock, but he showed an impressive characteristic strength to defy his doubles and return to his best form. +And he is still far from the end - Dettori once said he wants to continue in competitions until his at least 50.th. +Russia's Putin fires chief of staff Sergei Ivanov +Russian President Vladimir Putin unexpectedly dismissed his chief of staff, Sergei Ivanov. +Ivanov has been part of Putin's closest confidant for many years. +The 63-year-old has been appointed Special Envoy for Environmental and Transportation Affairs. +In an opinion from the Kremlin, it is that, without giving reasons, Putin "ordered the dismissal of Ivanovs from his duties as chairman of the Russian presidential administration." +Anton Vaino, who has been Ivanov's deputy since 2012, has been appointed to his successor. +Vaino, 44, is a former diplomat. +Born in the Estonian capital Tallinn in 1972, he graduated from the prestigious State Moscow Institute for International Relations (MGIMO) and worked in the embassy in Tokyo. +The Kremlin's website says (in Russian) that he was later the chief executive and chief executive of the government staff. +On his appointment, he said to Putin: "thank you for your confidence." +I think that it is the government's most important task to support your activity as head of state on draft legislation and controls to implement your instructions. +Putin told the Russian TV station on Friday that Ivanov had asked to leave his post and advised Vaino as his successor. +Do you see the smiling faces? +This move has kept Moscow shrouded in mystery. +Sergei Ivanov has long been one of Vladimir Putin's closest confidants and works like he did for the Soviet secret service, the KGB. +As chief of staff, he was one of the most powerful men in the country. +At a meeting with President Putin, which was broadcast on television, both men claimed that the Chief of Staff resigned at his own request. +But despite the smiles for the cameras, few are convinced here - especially now, just before the parliamentary elections. +So is this the result of a kind of power struggle? +Nobody knows that at the moment. +But the official claim - that a man once touted as a potential president would want to head Russian environmental policy at once - met with great skepticism. +In his remarks to Putin, quoted on the Kremlin website, Ivanov said " it is true that I asked you in a conversation in early 2012 to entrust me with this very complicated post - you could almost say - arduous posts for four years. +As it turns out, I have been the chairman of the Russian presidential administration for four years and eight months. +Ivanov took the post in December 2011. +Previously, he was deputy prime minister and defense minister. +He is a member of the Russian Security Council and, like Putin, a former member of the KGB State Security Service. +In the late 1990s, when Putin was chairman of the Federal Security Service (FSB), which replaced the KGB, Ivanov was appointed to his deputy. +When Putin came to power, he named Ivanov as one of five people he trusted most. +It was once thought that Ivanov could become president of Russia after Putin's second term, as a third term of Putin would have violated the constitution. +But this post was taken by another, close ally of Putin, Dmitry Medvedev. +Putin became prime minister before he became president again three and a half years later. +Criminal Minds star Thomas Gibson fired after he beat producers +Gibson was involved in a physical battle on the set of the series in Los Angeles last month. +ABC Studios and CBS Television Studios, which produce the series, announced their dismissal in a joint statement. +Gibson, who played Special Agent Aaron Hotchner, apologized publicly on Thursday before announcing his dismissal. +On the set, there were artistic differences and a difference of opinion. +I regret the incident," he said in a statement. +Details of how Gibson's character from the series, which follows a team of FBI agents, will be released, according to the opinion of the ABC Studios and CBS Television Studios, likely to be released at a later date. +The 54-year-old, who previously played in the sitcom dharma & Greg, has been with it since the first season of the series in 2005. +"I love Criminal Minds and have plugged my whole cardiac arrest for the last 12 years," Gibson said in a message released Friday. +I had hoped to be there until the end, but that will not be possible now. +I would just like to thank the authors, producers, actors, our wonderful crew and, above all, the best fans you can only wish for a series. +The planned broadcast of the twelfth season is scheduled for 28 September. +Mystery surrounding fish that landed in garden in Banff +A resident of Banff called for help in identifying the fish, which appeared in his garden in Banff. +Kevin Bain thinks it could be up to the 75 fish around Sandaale, who were out of a fountain. +Mr Bain, who lives about 500 metres from the sea, posted a video of the spectacle on Periscope in the hope that someone could shed some light on the appearance of the two-inch long fish. +Queensferry Crossing: bridge now linked to Fife +The £ 1.35 billion project is due to be completed by May 2017 +Engineers have linked the north deck of the Queensferry crossings with the viaduct - meaning the bridge is now linked to Fife. +It is the first of four closures of the "cover blower," which is nearing completion around each of the bridge's three towers. +The bridge section of Fife is now 600 meters long and weighs 30,000 tons. +It has 10,000 tons of steel and 20,000 tons of concrete and 46 swirls. +The £ 1.35 billion project is due to be completed by May 2017. +Economy Minister Keith Brown visited the building site today and was one of the first to go from the country to the bridge. +He said: "this is a historic and symbolic moment in the construction of Queensferry crossings. +We are all witnesses to an engineering of a truly epic degree in this project with over 30,000 tons of concrete and steel used for this part of the bridge alone. +Despite the massive size and weight of the bridge, the completion of the closure between the viaduct and the bridge is a delicate activity that requires extremely precise tolerances for fit. +Overall, nearly 79% of the total bridge checks are in their place and the final section of the deck gets a betting ring for the deck today in Rosyth, which means the entire deck is ready to be lifted to its place on the bridge. +Michael Martin, project manager of Forth Crossing Bridge constructors said: "the first closure represents a significant milestone in each bridge project. +In this fantastic project, the shutter represents forward-looking high and deep construction. +After the installation of the last section of the road and its connection with the northern tower deck, we had to close the remaining gap on the north or land side. +This was achieved by dragging the northern accessory bridge 700 millimeters south. +This was a massive and, at the same time, very delicate activity. +Massive, as the viaduct is 222 meters long, weighs about 6,000 tons and has had to be pulled up at a slope of about 3%. +Delicate, as the tolerances to which the team was working were tiny - on each side they were only a few millimetres away. +Fortunately, everything went very well. +Rescue at Moelfre Bay: three men ' lucky still alive ' +Three men are "lucky still alive" after being thrown from their fishing boat in front of Anglesey. +The Moelfre RNLI rescue station struck at 13: 20 BST on Friday after a crew watched the event in Moelfre Bay. +The three men had difficulty swimming in safety while their boat moved out of their own. +"We saw how the boat turned around in its vicinity and presented us with the worst," said the head of the rescue station of Moelfre Vince Jones. +"Fortunately, the strong winds have already blown the boat out of their reach until we left to water," he added. +Two of the men were rescued by a local fishing boat, while the third man was exhausted at the age of 60 and was found hanging on a Boje hanging without a lifeguard. +They all came aboard the coastal rescue boat and were taken back to the rescue station +Mr Jones said: "the three men who were thrown into the water are lucky to be unhurt and still alive. +The boat engine had an emergency stopover, but the boat was pulled out by the person who headed the boat. +Someone has woken up to these men today. +Seriously injured - man stabbed to his ex-girlfriend +A man has attacked his ex-girlfriend in Hamburg-Harburg with a knife and seriously injured. +As police said yesterday, the 50-year-old had been given the key to the apartment to pick up his personal things. +Instead, the alcohol-fueled offense cut his ex-girlfriend's clothes. +When she came into the apartment, he stayed on it twice. +The 44-year-old was injured in the hand and on the body. +The police could arrest the perpetrator. +While the 50-year-old destroyed his ex-girlfriend's clothes, he called his mother. +She then alerted his sister. +Together with her partner, the 45-year-old wanted to reassure her brother. +She could not get him to leave the apartment, though. +That is why she went out of the house with her partner. +On the street, they met the man's ex-life companion. +When the two women entered the apartment again, the 50-year-old stabbed his sister to the side and attacked his ex-girlfriend. +Who is building Braunschweig's cheap homes? +The SPD and the Greens believe that investors should be made much more accountable in the future. +How do you react to the bad news that Braunschweig will lose nearly 1300 cheap homes in the next few years? +The SPD proposes a "living concept" for the next Council meeting. +But dispute is programmed. +First of all, the question is: who is supposed to build the cheap housing? +There is no regulation so far. +SPD group chairman Christoph Bratmann said: "we agree with the Greens: anyone who wants to build on urban areas will have to designate 20 percent of all homes as social housing in the future." +However, the cheap apartments can also be created in the stock. +However, the big point of contention in the town hall, Bratmann said, is "how do you deal with investors who want to build on private land?" +"We want investors on such land to build at least 10 percent, but as much as 20 percent of homes as social housing." +A new urban housing support programme, which will cost millions and still needs to be funded, is designed to provide incentives. +The problem, Bratmann said, is "there is still no agreement between the groups at the moment." +The CDU wants investors to make as few rules as possible. +The left still wants tough conditions for investors. +Despite this, Bratmann said, the situation in the housing market is deteriorating. +If the concept of action is implemented, it will provide additional tasks in the construction administration. +More staff is needed. +It is unclear whether we will get the skilled workers. +But the programme is not yet complete: the approximately 1260 new homes, which should be built anyway. +But how do you compensate for the loss of some 1300 cheap homes, the promotion of which will expire in the next few years? +By 2020 alone, it will be 500 homes. +To prevent that, according to planning policy spokeswoman Nicole Palm, running ties should now be purchased from the city. +Consideration should also be given to getting housing back into price-fixing. +This is possible in the western city. +At one stroke, the problem could be solved. +Because in the western city, deadlines expire at the end of the year. +Around 1800 homes could be put back into price-fixing for cheap housing. +Only: that is what the owners want, the housing companies do not want. +There will be a drastic increase in the number of social housing in the western part of the city, away from the objective of the so-called mixing. +There should be no more concentration of socially weak in just a few parts of the city. +The Greens expect there to be some movement in the debate. +Group chairman Holger Herlitschke says: "for a broad majority, the CDU needs to go on board." +That has focused on more building sites for single-family homes. +But this does not mean that a compromise cannot be found. +Pokémon Go, a hunt for health and happiness that is worth +It is fascinating to see how the world is changing. +The fact that teenagers and children do not go outside to play, but rather prefer to spend their leisure time on screens, has been lamented by many over the last decade. +Pokemon Go is about getting people off the sofa and getting more active. +The time on screen was initially confined to the TV, then to video games and, most recently, to smartphones. +It is therefore great to see that technology and outdoor activities are not mutually exclusive. +I am referring, of course, to the Pokémon Go-Wahn, an app based on the characters created initially for the video games in the 1990s (later a cartoon series, playing cards and other spin-offs). +Like many phenomena of pop culture, interest decreased before the release of the game in the US, Australia and New Zealand in early July. +The market launch in other countries was delayed by the massive demand that the servers overloaded. +Within a few days, Pokémon Go had more users than tinder and almost as many as Twitter. +How does it work? +In short, players with their smartphones go out and look for Pokémons, which is tracked with a GPS and, once found, can be "photographed" (via a screenshot on the mobile phone) or "captured". +A generation that played the game when she was younger joined the madness and jumped for the search from the sofa. +In the US, the game led to a significant increase in steps that put the "average" person back every day. +Cardiogram, an app for Apple Watch that tracks 35,000 users, told the Washington Post recently that within two days of the game's launch, the number of folks who train for 30 minutes each day jumped from 45 percent to 53 percent. +The company does not know who plays Pokémon Go - it only sees the raw data to improve performance. +Many public health education campaigns that want to get people to "take 30 minutes of time to come" "from the sofa" and "to be active every day" came on deaf ears because many public messages to health are boring and come from people who look elder. +However, the importance of sport cannot be overstated. +Whoever drives sports regularly reduces his chances of suffering from cancer or depression. +Physical activity helps with weight control, high blood pressure, diabetes and a long list of benefits that is too long to lead them here. +But the wonderful thing about Pokémon Go is that it brings people to do something outdoors that makes them fun. +Thus, three pillars of health are covered - exercise, fresh air and sunshine as well as fun. +Some people even find new friendships on the hunt. +As always, there are also mammoth gamblers who always have to complain about something. +And yes, someone could run against a door. +What is to be done? +There has been a breakthrough. +Even if smartphone apps like Fitbit were able to track our activity earlier, they gave us no reason to play sports as this game does. +The new will lose its charm and the use will ease with time. +However, because of Pokemon's success, there will be more games that will combine apps and virtual reality with the real world, helping many people in the hunt to be more active, fitter and healthier. +Read Dr Joes Blog at www.drjoetoday.com +Simone Biles creates gold in Damenturnen +Forget the pressure. +Forget the hype. +Simone Biles is immune to all that. +Dynamically on the jump horse. +Effortlessly on the beam. +Stunning on the ground. +Absolutely brilliant. +And now, at last, Olympic champion. +The 19-year-old American Turner drove to the multi-match title on Thursday and widened the gap between himself and the rest of the world in front of all eyes under the spotlight of the Olympics. +Their total score of 62.198 was clearly ahead of the silver medal winner and "final Five" team adin Aly Raisman and Russian bronze medalist Aliya Mustafina. +American women Simone Biles Turnt on the beam during the women's singles tournament at the Olympic Summer Games in Rio de Janeiro in 2016, Brazil, Thursday. +Biles is the fourth heterosexual American woman to win a multiple-fight title and, overall, the fifth, while retaining her reputation for being the best of her generation, or even at all. +She broke out in tears when her final result was shown and her long journey came to an end at that moment. +This success puts them in the same league as unique athletes like Michael Phelps, who have brought their sports to new heights: +Biles has dominated her sport for the last three years, winning 15 World Cup medals - including 10 gold medals - with such amazing exercises that include a mix of ambition and precision that the 1984 Olympic champion Mary Lou bailout of her said she is "the best turner I have ever seen." +It was expecting a final test in Brazil, a contest that was not so much between Biles and the rest of the athletes, but rather between her and a load of oversized expectations. +Not returning with a handful of gold back to the family in Spring, Texas, would be seen as a disappointment. +The Americans Simone Biles, left, and Aly Raisman hug themselves after they each won gold and silver in the women's multiple-team tournament at the 2016 Summer Olympics in Rio de Janeiro, Brazil, Thursday +Biles picked up the first medal Tuesday while serving as an exclamation mark at the farewell ceremony of retired team coordinator Martha Karolyi. +Although Biles insisted, during her long road to the top, never planned the future, that is not really true. +Part of their ground exercises - which include their typical tumbling pass - is tuned to Latin American music that would fit at home on the street outside the Olympic arena in Rio. +This is no coincidence. +This girl, adopted by her grandparents as a small child and was discovered by trainer Aimee Boorman's mother during a school trip to the gym in which Boorman trained, became the force. +She has not lost multi-match competition since the summer of 2013, a winning series that will continue as long as Biles wishes. +Even if Mustafina led by two turns slightly, the picture blew up. +Sweat beams and ground urns - in which Biles holds the world championship title - lauded. +She picked up again with 15.433 on the sweep bar - and put one on it with a 15.933 on the floor. +Raisman embraced them gently as they awaited their final gloss - a mere formality - and tears flowed on Biles gleefully red, white and blue Eyeliner, when the vision she once described in her collection book became the reality. +Raismans ' performance was a revenge for the last time four years ago, when she struggled for third place, but the bronze medal in a tiebrake went to Mustafina. +This time, the 22-year-old team captain, called "Grandma" by the Americans, had a head start. +After her floor exercise, she threw the audience to the audience, overwhelmed by a comeback that sometimes seemed doubtful. +As for Biles, the fast-spreading tweet of 19-year-olds from earlier this week has a whole new meaning: +Police: 3 victims in serial murder case at music hearing in car shot +According to police reports released Thursday, two women and a 12-year-old girl were shot dead in one of the deadliest attacks in a decade in Phoenix's first serial murder case while they were staying in the car and listening to music. +Angela Rochelle Liner, Stefanie R. Ellis and Ellis's daughter Maleah were shot dead June 12 while the car was parked in an entrance, authorities said. +The perpetrator fired eight shots from a handgun while he was on the front passenger side of the car and then fled with another vehicle, the report said. +Police said that the triple murder did not seem to have been the result of a robbery, as the attacker did not take the handbags or the $2.900 that was owned by one of the adult victims. +Phoenix Sgt. Jonathan Howard's police spokesman said the shooting caused investigators to take a closer look at whether it was linked to four previous attacks. +A total of seven people were killed and two others injured, mostly in Hispanic residential areas within four months. +"It is happening in a residential neighborhood in front of a house," said Howard of the KHPO, a subsidiary of CBS, earlier this month. +It is believed the suspect used several vehicles, including a brown Nissans from the late 1990s, a black BMW from the late 1990s and a white Cadillac or Lincoln. +Investigators refused to reveal the evidence they led to the conclusion that the attacks were linked and were committed by the same killer. +Ellis, 33, was hospitalized because of her injuries and died later. +Liner, 31, and Ellis's daughter Maleah still died on the spot. +A witness told police that it was not unusual for her to sit in a parked car and listen to music. +Authorities also released a police report on the shooting, which was aimed at an empty pickup truck half an hour before the triple murder and is believed to have been the work of the serial killer. +Investigators found cartridges and secured a bullet from the seat as well as bullet fragments from the engine room. +Mother of a 6-year-old with microcephaly: "it is getting better" +Like most 6-year-olds, Edmund Picciuto loves the singing, toys and, of course, his mother. +But like the least of his contemporaries, Edmund has microcephaly, the result of a genetic disorder that his mother Elizabeth Picciuto knew nothing about during her pregnancy. +When he first came home, my first thought was, I do not get that. +I do not do that. +I did not get into it. +What is not right at all -- of course, you got into it," she said. +Her husband Vincent and her have been told that Edmund may never recognize them, and that he may not even survive. +Some doctors even went so far as to suggest that they institutionalize it. +"My first response to this was ' I did not know that people still do, '" declared Picciuto. +Edmund can run with the help of a walker. +Edmund could not sit and crawl until his third year of life, and he still cannot speak. +But he is making slow progress. +He can run with support and cycling. +He also loves to play and sing with his two brothers. +Elizabeth shows the sign language that Edmund for " Please sing me something before ". " +"We are bringing him sign language," Picciuto told CBS News. +But it is not a typical sign language -- she says Edmund has invented some characters on his own. +Microcephaly has a variety of causes: genetic as well as Edmund infections, as well as infections with viruses such as measles or the Zikavirus during pregnancy. +The symptoms and forecasts can vary greatly. +It is too early to say how it will affect the lives of those infected with the Zikavirus. +Picciuto remembers the emotional price of an uncertain future. +I constantly asked, what will happen? +What will happen? +And she still does not really know. +I have not been asking for the prognosis for a long time, because I do not expect them to really tell me anyone. +But Picciuto has a hopeful advice for mothers of babies with birth defects caused by the Zikavirus. +It is getting better. +You know it will be better for you. +You will love your child and your child will love you. +Heavy rain, flooding give rise to rescue in Louisiana, Mississippi +Heavy rain and large-scale flooding in Louisiana forced the governor to declare a state of emergency on Friday, with more rain expected throughout Saturday. +Numerous rivers in southeastern Louisiana and southern Mississippis flooded their shores and threatened with large-scale flooding after extreme rains, the National Weather Service reported. +Louisiana Governor John Bel Edwards said that state officials are in constant contact with the local authorities and are already on the way to help affected communities. +Mike Steele, a spokesman for the governor's Office of Homeland Security and Emergency Preparedness, said that requests for flood vehicles, boats and sandbags were multiplying. +Steele said that only the municipality of Tangipahoa had requested tens of thousands of sandbags. +A flood warning system will be deployed across much of southern Louisiana until Saturday. +The weather service indicated that an additional 3 to 5 inches of rain could fall in this area. +A tsunami warning system was set up in the south of Alabamas on Friday, while it continued to rain in the Mobile area. +The River Comite near baton Rouges and the Amite River near Denham Springs, both of which are located in Louisiana, are all likely to reach record levels over the weekend. +The metereologist Alek Krautmann says both rivers could flood many homes into the suburbs near baton Rouge. +He also said that a stroke-down exuberance in Ascension Parish poses a danger, as these are going to flow slowly into Lake Maurepas across the river. +The Tickfaw River, south of the Mississippi State border in Liverpool, Louisiana, reached the highest level ever recorded at 09.00 on Friday. +Rescue teams still trapped people from the floodwaters in the Amite district and Wilkinson in the southwest of Mississippi. +Leroy Hansford, his wife and stepson were among those rescued Friday near Gloster. +Hansford, 62, says water from Beaver Creek, which is usually more than 400 feet away from his home, rose sharply overnight. +He said another stepson, who lives nearby, had been warned. +"We woke up and the water flowed and poured in," said Hansford. +It reached my waist. +His wife told Hansford that in the 48 years in which she lived there, she had never seen such a high tide of the river. +Hansford said he and his family members all had disabilities and he would be the only one who can swim. +Hansford said that Nothelfer had rescued all three in a large military truck and brought them to the nearest fire station in Gloster, where they were staying until Friday. +Krautmann said the flooding had "spread quickly" as there continued to be heavy rains and that the authorities were considering evacuation orders. +According to Krautmann, an observer arrived near Livingstone from midnight to Friday morning of 13.75 inches of rain. +Krautmann said the ground had been considerably swollen by the rains since Wednesday. +Authorities said heavy rains and street flooding caused the rescue of residents from their homes in Tangipahoa Parish and tuition failure in five school districts. +The CBS subsidiary WWL reported that a subordinate in Tangipahoa gave up 200 flooded homes. +Residents were evacuated in two churches, which were now both flooded. +The suburb of the municipality of Robby Miller said authorities had rescued 72 people and seven pets that were strapped from the floods. +In the cities of Amite and Hammond, emergency shelters were set up to house the evacuees. +"Once the water starts to go back, they will be able to go back to their homes," he said. +In the town of Hammond of the municipality of Tangipahoa, nearly two dozens of roads were closed due to the flooding and provided sandbags to residents who hope to keep the water out of their homes and shops. +"The last major flooding we had was in March," said Lacy Landrum of the city government. +This seems to be a similar incident. +In Mississipp, emergency manager Rupert Lacy of the Harrison Countys said it continued to rain on the Gulf Coast. +According to his figures, a handful of homes were to have been reported flooded Thursday, but none were reported on Friday. +Keith Townson, manager at shopper Value Foods in Amite, has been living in the area for 40 years. +"I have seen water in places I have never seen before," said Townson,"and it is still coming." +Mahaj Brown, 6,"riddled with bullets," survives shooting in Philadelphia +Police say the 6-year-old boy was shot in Philadelphia this week already the second time a 6-year-old child is being shot. +The boy's grandparents identified him for CBS Philadelphia as Mahaj Brown. +The grandparents said Brown suffered several stab injuries, including in the lender, leg, arm and belly, but that he was hospitalized when he was transported to the hospital. +"He has gone through a lot, his little body was riddled with bullets," shared his grandmother Delores Melendez told the station. +I simply cannot believe that. +The boy's condition was considered critical in a hospital and he had to undergo several surgeries. +The boy's family told the station that he is expected to recover. +He should have started the first class at a local primary school. +Brown was one of four people shot at Germantown. +Also shot down were three men: two at the age of 29 and a 32-year-old. +One of the 29-year-old men is in critical condition; the other two victims are in stable condition, according to CBS Philadelphia. +The boy was found on the front seat of a car along with the 29-year-old, who is in a critical condition, the station reported. +The other two victims were not in the car and police are investigating whether one of the injured men could be among the injured men. +Investigators told CBS Philadelphia that there appeared to be a crossfire between several shooters. +Cartridges for storm guns, traced to various storm guns, overturned the scene. +It seems that this has clearly been an ongoing struggle. +On the street, on both sides of the trail, there were hugs. +So there seems to have been several armed fighters who were very actively involved," shared police chief Anthony Ginaldi of police in Philadelphia told the station. +Several houses and vehicles were also hit in the area. +No arrests have been made and police are currently reportedly reviewing the surveillance video. +On Tuesday, another 6-year-old girl was hit by a transcript at the arm when she played in front of her home in the residential area of West Oak Lane. +She is recovering and police are still searching for a suspect. +Why we need Simone, Gabby and Laurie +That is what I imagine under the women's Olympic team in the tournament, and that for more than one reason. +First, I have been at every summer Olympics since 1984 and the US has never been so dominant. +And second, this team has three turners, Simone Biles, Gabby Douglas and Lauren "Laurie" Hernandez, who have been inspiring for many young girls of other skin color. +The structure of this crew, the Aly Raisman, who is Jewish and Madison Kocian, who is a Catholic, makes everyone proud. +This team finally reflects the US. +It has solidified the black and Hispanic female presence at the top of this sport. +In the last four years, the number one female Turner has been an Afro-American. +Last year, Simone and Gabby were _SHARP_ 1 and _SHARP_ 2. +That shows strength. +At the last Olympics, Gabby Douglas was a surprising Olympic winner and America cheered. +Now the world has been able to witness the incredible performance of the three-time world champion Simone Biles, Douglas and Laurie Hernandez, as they delivered unexpected but masterful gym routines. +On Thursday, Simone became the fourth, heterosexual American who won gold at an individual multifight event for women. +Team member Aly Raisman won silver. +We are seeing the top of this sport, but so tournament classes across the country do not look out. +Simone, Gabby and Laurie all hit the same road as Aly and Madison to make it into the Olympic team. +They are the "last five" because the next Olympic team will have only four tournaments in the team, and this is the last year with Marta Karolyi as a trainer. +But the reality is that Turns is an expensive sport and Turner is primarily in private gyms, which are maintained by parents who pay for the training, deployment, travel, competition and hotel costs (for the trainers and their Turner and families). +The majority of these tournament clubs are in wealthy suburbs that can support the business. +In these clubs, Turner receives all her training and that is an expensive and long-term commitment to the families. +Aimee Boorman, trainer of Simone Biles, and Maggie Haney, trainer of Laurie Hernandez, both have trained their athletes since they started the tournament. +We need to allow the communities of Aun countless young girls, inspired by Simone, Gabby and Laurie, to have a more affordable and accessible gym. +I founded my tournament of 20 years. +At my events, we have offered free and affordable tournament in Harlem for more than 15,000 urban young people (especially black and Hispanic) and trained national and international winners. +In September, we will expand to Detroit (my hometown) to provide high quality tournaments to the youth who deserve the opportunity to learn and benefit from this great Olympic sport. +It develops strength, flexibility and coordination for the body as well as hard work, discipline and determination for the mind. +This combination offers lifetime benefits for health and school and professional success. +It is the inspiration of this team that will make thousands of young girls interested in the tournament and that is great. +It is so important to participate in sports, especially for girls. +This is such an exciting time. +Thanks Simone, Aly, Laurie, Gabby and Madison for this real portrayal of "girl Power" by the Holen of Olympic team golds and thanks, Fass motivated her so many young girls with different backgrounds to start their way to become healthy, strong and successful young women. +Assistant doctors want to organize further strikes after rejecting Jeremy Hunts proposal +Ministers had hoped to end the dispute over the changes by adopting a reformed contract with the officials of the British Medical Association, but 58 percent of the 37,000 assistant doctors who voted in an election rejected it. +In July, Hunt had revealed plans to introduce the contract forced and said the NHS would be in a "no-man's land" and any further delay would be harmful to staff and patients. +The first assistant doctors are to receive a new contract that includes changes to night and weekend work in order to improve care at uncomfortable times. +Dr Ellen McCourt, the BMA's chairman for assistant physicians told a news conference last night: "assistant physicians still have serious concerns about the proposed contract, particularly that it will fuel the current workforce crisis and fail to treat all doctors fairly." +With only eight weeks remaining until the first group of doctors are under the new contract, progress must be made and time is running out. +Efforts by the BMA to resolve the disputes through talks resonated with the government's reluctance to take part, and sometimes to deafening silence. +That was the one promise that Jeremy Hunt had made only last month that his door would always be open. +"Jeremy Hunt needs to act now, lift the imposition and address the concerns of assistant doctors." +If he fails to do so, the assistant doctors have made it clear that they are ready to carry out further industrial action. +The latest strike in late April saw an upswing of nearly 13,000 routine operations and 100,000 schedules, as nurses and specialist doctors were involved to provide cover to doctors on the strike mail chain. +The ministers had hoped to end the dispute over the changes by adopting the reformed treaty with the officials of the British Medical Association. +The BMA wants a better weekend reward for the 54,000 assistant doctors who will be subject to the contract. +Daniel Mortimer, director-general of the NHS staff, urged the assistant doctors to stop the strike. +Mortimer said: "labor action measures do not achieve anything of the little, but already strain teams and service providers and prepare the patients, carers and their families only for concern, distress and disruption." +Over the last two months, we have spoken to the committee of assistant doctors and responded positively to the concerns about the guardianship and whistleblowing with the Ministry of Health and other ministries. +Employers hoped that the continued positive engagement on other important issues - such as posting, flexibility in training, training leave and the gender pay gap in medicine - was a sign of how seriously employers, the Health Education England and the Department of Health were about to comply with the agreements with the BMA in November, February and May. +The £ 2-a-day drug that can reduce heart attack risk +Thousands of heart attack patients will benefit from a £ 2 per day drug after being advised by the authorities to administer this more people for a longer period of time. +The grinning drug Ticagrelor reduces the risk of repeated heart attacks for people with heart disease. +The drug is administered for 12 months after a heart attack, reducing the risk of a stroke or another heart attack. +The regulator NICE of the NHS has recommended a four-year enrollment to further reduce the risk of cardiovascular problems. +The regulator NICE of the NHS has recommended a four-year enrollment to further reduce the risk of cardiovascular problems. +Some 140,000 people suffer a heart attack every year and a quarter of them suffer another heart attack or stroke. +Heart attacks and strokes are caused by collections of fatty materials in the artery walls that form the siege. +If the bag breaks apart, it can cause a blood clot that clogs the blood flow to the heart, causing a heart attack. +When the blood clot dissolves, it can flow through the bloodstream and clog the blood flow to the brain, causing a stroke. +People who have already had a heart attack are subject to a higher risk. +Ticagrelor, which is manufactured by the British company AstraZeneca and distributed under the trade name Brilique, reduces that risk by making the formation of blood clots less likely. +NICE's bond proposal, published today, recommends a 12-month enrollment of 90mg Ticagrelor, followed by 60mg with a twice-daily intake of aspirin for the next three years. +Professor Carole Longson, director of the NICE Health Technology Evaluation Center said: "despite the availability of secondary prevention, a quarter of all people who have suffered a heart attack have another heart attack or stroke - often with disastrous consequences." +Fear of another heart attack may have a significant negative impact on a person's quality of life. +Experience shows that Ticagrelor, in combination with aspirin, is effective in reducing further heart attacks and strokes in people who have already had a heart attack. +Through a preliminary recommendation from Ticagrelor, we are pleased that we are able to expand available treatment options to thousands of people who can benefit. +The information about the efficacy and safety of Ticagrelor - especially the risk of bleeding - is limited to a period of up to three years. +Culture of political correctness allows electoral fraud to flourish in Muslim areas +Former mayor of Tower hamlets Lutfur Rahman was removed last year at the instigation of a government report for corruption +A culture of political correctness has meant that widespread electoral fraud in Muslim communities is knowingly ignored, as a damning government report revealed today. +Former cabinet member Sir Eric Pickles verbally blames police, election observers and town halls for ignoring evidence of electoral abuse due to "over-sensitivities regarding Ethnie and Religion." +The former minister of integration and municipal government, who is now an anti-corruption royal, said intimidation of voters from religious motives would be so bad that police should be allowed to set up roadblocks outside polling booths to protect intimidated voters. +He recommends that voters should have an identity card to prove their identity in elections. +At the moment, a voter only has to name his name and address. +The report suggests not wearing removable ink on a person's finger when they cast their ballot to prevent someone from voting twice. +Whistleblower should get more protection, says Sir Eric +He calls for the press to have more access to community documents and decisions from non-official committees or working groups. +"That is not just against electoral fraud, but is also intended to protect the municipal government from the broader corruption and financial fraud culture that goes with it," he said. +The report was ordered by Downing Street as a result of the Tower hamlets campaign scandal in east London. +Last year, a special election court ruled that incumbent Mayor Lutfur Rahman should be removed from his office after a litany of corrupt and illegal practices. +The court found that Rahman had "cynically perverted the religious feelings of his Muslim community" and that he had silenced his critics with racissism and Islamophobia. +Rahman is said to have "led his campaign on the basis that it is the religous duty of Muslims to choose him." +Up to 300 votes were either doubtful or the consequence of an imitation in which one person chooses someone else. +Sir Eric said there was evidence of fraud across the country. +In particular, he expressed an alarm at the fraudulent election - where the older members of the Muslim community had put pressure on people to choose a candidate of their choice. +Sir Eric, pictured, made several recommendations to clean up the electoral system, including driving out identity cards to prove identity +His report says: "as evidence, it was appropriate to put pressure on vulnerable members of some ethnic minorities, especially women and young people, to vote according to the will of the elderly, especially communities with Pakistani or Bangladeshi backgrounds. +"There were concerns that... state institutions had knowingly ignored such behaviour because of" politically correct "over-sensitivities regarding Ethnie and Religion." +Sir Eric said 50 recommendations had been made to clean up the system, including the ban that political activists are editing letter papers to stop "polling." +The report, which is being considered by Theresa May, also calls for tougher registration checks to prevent the election directory from being used for immigration and social fraud purposes. +Consider options to ask voters before the election, according to your ID. +Do not use removable ink on a person's finger once she has cast her vote to prevent someone from voting twice. +To carry out systematic checks on a person's nationality to ensure they are eligible to vote. +A three-year limit on applications for automatic mail votes. +Ban that political activists process full postal elections and envelopes of letter elections. +The police give the authority to set up closures around polling stations. +A change of law that facilitates an indictment of intimidation in accordance with the Representation of the People Act 1983 (People's Rights Act 1983). +Photography ban in polling stations. +Requirement that only English should be used in polling stations (with the exception of Wales). +Intensification of training to ensure that staff enforce the rule that voters go to the polling booths alone. +Sir Eric falls over the Metropolitan Police and finds it "amazing" that after the Tower hamlets case no criminal complaint was made. +"The electoral court has declared Lutfur Rahman and his deputy to be unfit for purpose because of a litany of corrupt and illegal practices," he said. +He was found guilty on a number of grounds for sufficient - according to the high requirements in criminal proceedings. +He also criticizes the ineffective "quake controls" of the city halls ' election registration departments. +Sir Eric said: "the court ruling in Tower hamlets last year was a warning sign. +Our country has a proud heritage as the mother of parliaments, but the worrying and covert spread of electoral fraud and denial of some authorities threaten this good reputation. +Crazy after Kates cycling doubleheader and other famous doppelgers of Olympic athletes in Rio +Fans of the 2016 Olympics in Rio are out of touch this week about French cyclist Pauline Ferrand-Prevot except Rand and Band, who has proved to be an impressive doubleheader of the Duchess of Cambridge. +But the 24-year-old Olympionicist this summer is far from the only one to have gold struggling athlete, who has his own famous doppelganger - at least not if you are allowed to believe social media. +In honor of the Rio Olympics and all the famous faces that currently flicker on our screens, FEMAIL has drawn up a list of Olympics that have more than a certain resemblance to Hollywood famous. +The hunter and the wolf: team member of the US team in the archery Brady Ellison, left, has been compared since his childhood with Leonardo DiCaprio +In addition to Kate's doubleheader on the racetrack, many people on the Internet pointed out how a certain archery could be the twin of A-Promi Leonardo DiCaprio. +The team member of the US team in the archery Brady Ellison caused a onslaught on Twitter after images on which he looked uncannily similar to the Wolf of Wall Street star. +In fact, the boyfriend got the madness in social media and admitted that he has already been told since his childhood that he looks like Leo. +"I myself do not see any great similarity, except for facial hair," shared Brady told the Huffington Post. +"He is a gut-wrenching guy, so I take that as a compliment." +One of the most popular comparisons since London 2012 will undoubtedly become more central this year: the alluring resemblance between British wide leader Greg Rutherford and the popular actor Neil Patrick Harris. +Russian gymnast Aliya Mustafina, with her big, expressive eyes, is supposed to go through as a doubleheader for the Cuban-American singer Gloria Estefan. +And in the swimming pool, South African swimmer Cameron van der Burgh has been compared to Glee star Matthew Morrison for years. +One gear higher: this user believes that Nathan is the "athletic version" of the inception actor +Another persistent comparison was drawn between tennis star Rafael Nadal and actor Josh Hartnett, who has similarly severe eyebrows and lips. +Russian silver medallist Yulia Efimova points out more than just the sun-baked skin and blonde hair like actress Annalynne McCord, while American Nathan Adrian was attested by fans, a "athletic version of Joseph Gordon Levitt." +Strong women: football star Hope Solo, left, and Dexter actress Jennifer Carpenter, right, have a similar facial form and eyes +Not the only one: a Twitter user was very happy that others noticed the similarities as well +Theory put into space: according to this user, there may be a reason for the couple's similarity +One Twitter user explained her satisfaction that "the rest of the internet thinks that Hope Solo and Jennifer Carpenter are almost identical." +Indeed, US football star Hope Solo and the Dexter actress Jennifer Carpenter have an incredibly similar facial shape and eyes. +Other popular comparisons included Kerri Walsh-Jennings and her smile, which is nearly identical to that of actress Laura Linney, as well as the gold medal winner in the Turte Gabby Douglas, which features its own beautiful, broad smile, similar to that of Bring It On Star Gabrielle Union. +CBC commentator for the Olympics apologizes for his statement that Chinese swimmers "died like a pig" +Byron MacDonald's analysis of fourth-place 14-year-old Ai Yanhan at Dr 4x200m freestyle squadron outraged viewers of the CBC live broadcast of the Olmypian Games on Wednesday +Canadian broadcaster CBC had to apologise after one of its commentators said the 14-year-old Chinese swimmer went "like Mief" and died during the race like "a pig." +Commentator Byron MacDonalds thought his microphone was off when he made his own opinions at the end of the 4x200m freestyle squad. +MacDONALD, who had been summoned to the CBS commentary team on board to give more "color," could be heard saying,"this little 14-year-old Chinesin has lost the connection, baby." +Too excited, went off like Mief, died like a pig. +Thank you for that. +Chinese swimmer Ai Yanhan, 14, swept the second leg of the swimming squad 1: 57.79 - 1.61 seconds slower than Canada's Taylor Ruck, allowing the Canadians to close the gap with China. +Viewers across Canada reacted quickly online after being shocked by the tone and language +Emmett Macfarlane tweeted," Hat the CBC commentator just said that the 14-year-old swimmer from China " like a pig has died "???? +The idiot did not capitalize that they were still on broadcast. " +Ai Yanhan of China was described in the final 4 x 200m freestyle swimming squad for women: "this little 14-year-old Chinesin has lost the connection, baby." +The criticism against Byron MacDonald on Twitter came fast and hard, at which many asked him to speak +Twitter users did not hold back when they heard how insensitive Byron MacDonald was +Another Twitter user, Sarah Paradis, wrote: "wow, _SHARP_ ByronMacDonald. +You represent the CBC and Canada and let us all look like racists. +A short time later, Scott Russel, who moderated the CBC broadcast, apologised live for MacDonald's comment and said: "we apologize that the comment was broadcast on a swimming performance." +It was an unhappily chosen phrase, we are sorry it happened. " +CBC apologized at the end over 90 times at the people who responded to the note on Twitter +Fellow commentator Scott Russel had to apologise on behalf of MacDonald +CBC copied and added his apology to more than 90 other Twitter users who complained about MacDonald's comments +The network also apologized quickly and issued a notice. +We sincerely regret that these statements were made and that it was possible for them to be broadcast. +Last night we quickly apologised to our viewers on broadcast and our followers on social media. +To make one clear, Byron's comments related to the swimmer's performance and not to her as a person. +Yet they were inadequate and an unhappily chosen phrase. Byron does what he has said, very sorry. +On Thursday afternoon, MacDonald apologized in the broadcast and tried to justify his comment, saying it was not his intention to be interpreted as a personal attack. +"I would love to take a moment to apologize for the comment I made after the women's swimming squad in the CBC Olympics," he said. +"I was referring to the performance of the swimmers and not to them as a person." +Of course, no disrespect was intended and I am very sorry. " +Shoppers in Primark outrage over woman who tried shamelessly underwear amid business +The buyers did not know where to look when a woman pulled out her clothes in the middle of a primark to try underhoses. +To aggravate the situation, she mustered how she looked, pulled her out and put her back on the shelf. +She stumbled further and tried four pairs of underhoses in a shop at the Bouverie Place shopping mall in Folkestone. +The Primark store at the Bouverie Place shopping mall in Folkestone where the woman tried the underdogs before putting them back on the shelf +A mother of two children, Jenny Davidson, who was in the store at the same time, said that after the mysterious woman had tried the underwear,"she grabbed her again and left the store without buying anything." +She said: "people could not believe what they saw." +Standing in the middle of the sales floor, she took a pair of underhoses out of the exposition, pulled her own tights and trousers and tried them. +"She did not even try to find a slightly more discreet place to do it - she just stood there, cheeky like Oskar." +"Everybody stared when she pulled out the underhoses that obviously did not like her as she put her back on the shelf." +She repeated the same thing with three other underdogs before she finally decided that she liked nothing, moved back and forth. +"She did not seem to bother that she was watching someone - or thinking about the person who might be buying the underhoses she had tried." +Ms Davidson, 33, who lives in Kent, said: "how disgusting to think that someone would take shelter with someone who had a different person and who was not washed." +The incident occurred Tuesday afternoon. +Ms Davidson added: "as I have been told, the staff have tried to pull the garments out of the sale after it went - which is just as good." +"I would hate to go home with a new pair of underhoses and find out that another woman had them and pulled out again and they did not wash." +A Primark spokesman said: "Primark is aware of the incident that occurred on Tuesday, August 9 at our store in Folkstone." +All eligible products were pulled out of the sale. +How to protect yourself with krav Maga from gun attacks +The world out there is a dangerous place, but this video from Dailymail.com could make it a bit safer for you. +We talked to Rhon Mizrachi, a grandmaster of the Krav Maga Association in New York, to find out how to deal with armed robbers at close distance. +Regardless of whether you are approaching you from the front or from the back, this video will show you how to turn the tables for your robber. +If you approach you from behind, you should first turn around so you can see your attacker and "get out of the firing line," Mizrachi says. +Then take the gun between your suburb and your shoulder before you hit him in the face with your free elbow. +Then beat him with his knee in the bar and twist, while the attacker crumbles in pain, hands the gun out of his hands, beat him with the run and move backwards while they turn the gun on him. +With attackers approaching from the front, the technique is similar - move your body out of the firing line, seize the gun and twist it, so the attacker can 't shoot. +At the same time, shift the weight to the gun and beat the attacker to the chest, then twist the gun out of his grip before moving backwards and put the gun on it. +Does it sound difficult? +Watch the video to see exactly how it prefers Mizrachi. +But remember that, in a robbery, it is safest to hand over your money - unless you are a krav Maga grandmaster. +Traveler Ian Wright slams for a travel guide his tongue at Europe's dirtiest places +A British traveller underwent his immune system and Würgereflex of a serious examination - leaving some of the dirtiest and most eclectic places in Europe. +The presenter and travel writer Ian Wright, 51, from Suffolk shouted his course on a euro note, a railing at the Piccadilly Circus, a sprinkling of a train toilet as well as a public phone in Russia to demonstrate the resilience of his immune system. +Before leaving each object, he used a luminometer to show up and show us what he is going to get into. +But the experiment, which was filmed under the title "The Lickhiker's Guide to Inner Strength," brought some surprising results to light. +The idea of leaking the wrinkles of a train toilette, which has already been used by thousands of others, may be completely repulsive, but in fact there are more bad bacteria in a kitchen sink. +On his trip through Europe, Mr Wright spoke to doctors and medical professionals about the promotion of intestinal bacteria as well as about his own health. +Fortunately, nothing left him, more than a bad aftertaste in his mouth. +Mr Wright became known for testing the resilience of his intestine by traveling through the world and eating strange and wonderful things. +From public purses at stations to spot-buttons of toilets, the task put his immune system definitively under a sample +In the film, he told reporters: "as a child, I was relatively unconcerned about my health and I put all sorts of things in my mouth, earth, worms and mud water." +In the film, he lived up to his reputation in any case. +The only thing he opposed was a dirty public toilet in Russia. +His trial stroke showed a luminous number of over 4000 units. +In comparison, the luminous number of freshly washed hands is less than 60. +But there was a Russian toilet that he refused to lick after their luminous number was over 4000 units, while freshly washed hands one of less than 60 +Mr Wright and the Finnish manufacturer of dairy products Valio produced the "The Lickhiker's Guide to Inner Strength", which shows the number of bacteria in different places such as the bathroom. +In the film, he says,"that comes close to the worst I have got in a toilet." +There is nothing more dirty than that! +I am not going to spot anything here because it is ecclesiastical here. +"The Lickhiker's Guide to Inner Strength" was produced in collaboration with the Finnish manufacturer of dairy products Valio. +The company equips Mr Wright with Valio's freezer, which includes both lactic acid bacteria and vitamin C and D to support the promotion of intestinal bacteria and the immune system. +Valios senior Venice president for snacks, juices and new categories Niko Vuorenmaa says: "we really wanted to offer consumers something new. +Something that is fascinating to watch and at the same time explains the benefits of probiotics. +We led crazy brainstormings that ended that we said "Let us call Ian." +They claim that the interest in intestinal health becomes a global phenomenon +Instead of just talking about the products, we wanted to put them in a wider context - the good and bad bacteria in our everyday environment, the importance of intestinal health and how it is linked to the immune system. +The growing interest in intestinal health is a global phenomenon and, with the documentary, we have been able to provide consumers with more information in an interesting way. +I also think the movie shows we have a great sense of humour! +Tom HAKALA, who led the film's directing, added: "let me say so - I would have lost my respect for Ian if he had leaked some of the things I have instructed him to lick, like the eclectic Russian toilet shown in the film." +Of course there were things where it was easier to get Ian to lick them and others where this was quite difficult. +I am glad we have taken some of these dirty treats on film. " +In a 2015 survey conducted by Valio, 84 percent of all respondents surveyed milk-acid bacteria in particular, with the well-being of stomach and intestine, and 58 percent said they at least occasionally use products containing attached lactic acid bacteria. +Asocial family destroys pre-delocation social housing in Saltash, Cornwall +An asocial family left their social housing after a deluge with damage of £ 50,000 because it had terrorised their neighbours. +Tanya Skeldon and her partner Shaun Trebilcock were thrown out after a long list of complaints from their estate in Saltash, Cornwall. +After being forcibly removed from their property, shocked employees of the housing cooperative found the property in an irreparable state. +The walls had gaping holes, wooden diapers were ripped up, rubbish was scattered on the floor and graffiti was tasted to the walls. +The family have been resettled and it is thought she now lives in a private accommodation +Donna McEvoy, who works for home administration at Cornwall Housing, said she feared the apartment was no longer to be repaired. +She said: "it has been an absolute nightmare for people here and I am of the view that people do not have to live this way. +There are many things to consider, as this property is likely to be considered as not so beautiful part of Cornwall. +The family is notorious and their reputation is also. +The couple had three sons who lived in the apartment in the meantime, and police said the terror that the family had inflicted had included street battles with baseball sleepers, intimidating residents, drug abuse, drug trafficking and excessive cries, strife and flukes. +Skeldon, 47, whose name was on the lease, got an arrangement for anti-social behavior in June. +In some rooms of the house that may be demolished, old garbage was found +In the property in which drugs were traded in the past, the wooden diapers were ripped up +Neighbors said they saw them fighting on the street and regularly called the police +Cornwall Housing deluded her and her partner this week violently from the estate after giving them an extended deadline of 11 weeks to voluntarily pull out. +The delogization was cheered by relieved neighbors who said their lives were made to hell. +One said: "they did not care about anybody." +We lived for 20 years next to them and it was always bad. +The countless times we tell the police here are incredible. +"This morning we could not sleep." +We stood up because it was so quiet here - we are not used to it! +Now where they are finally gone, it will be nice. +Adam Fitzpatrick, Neighbourhood Enforcement Manager of Cornwall Housing, said the family had failed to cooperate with the local authorities. +The family lived in the house, to which the police were called at regular intervals, for 20 years +Rubbish and old toys were dumped on the overgrown side of the townhouse +He added: "it is a shame that the tenant failed to accept any responsibility for their behaviour and that of their family, as a delusion is always the last step that Cornwall Housing is considering. +This was a very difficult case because the behaviour was extreme and their actions had to be horrible for their neighbours. +I appreciate all the work that has been done by my team, the police of Devon and Cornwall, as well as members of the community who have courageously approached us and who have provided us with the information. +I hope that this development will give some comfort to some neighbours and conveys the message that anti-social behaviour will not be tolerated. +FITZPATRICK said that all three sons had lived in the house at different times, but that they were all over 20. +A dirty mattress left in one of the house's bedrooms after dehydration on the floor +Home management workers will now have to clean up rubbish mountains that surround the house +In 2014, the police carried out a raid in the house and found over 70g of cannabis as well as scales, paraphernalia and cash of £ 1,700. +Skeldon received a fine after she pleaded guilty to possession of a class B drug in trading terms. +She claimed the money was for a tombstone of her son Lee Skeldon, who died in a car accident in 2013. +After they were without shelter, it is assumed that Tanya and her partner now live in a private accommodation in Plymouth. +Many room walls of the house were smeared with graffiti. +Police say they will delve tenants who do not adhere to house order +Angela Crow of the Devon and Cornwall Police said that the delotion was a clear warning to the other tenants who do not abide by the house order. +"This goes to those who think they can behave without self-accusation, as well as to those who have been harmed by such behavior," she said. +The Devon and Cornwall Police will never tolerate criminal and anti-social behaviour that will continue to work with partners to protect our communities. +Tourists in Portugal panic after a tippling military jet beach overflies +Sunseekers in Aveiro, Portugal experienced the shock of their lives +A portuguese P-3C Orion plane of the Air Force set off an incredible fall flight +The Air Force said it was on a training flight but insisted there was no safety risk +This was the moment when frightened tourists begin to panic after a tipical jet crashed over a full beach. +Dramatic video footage showed how the military plane flew almost in tangible proximity over the sunbathers on the beach section in Aveiro in northern Portugal. +The holidaymakers jumped on when they understandably began to worry about the noise of the jet engines without first seeing what was coming through the clouds on them. +The incident occurred yesterday afternoon in Costa Nova, near Aveiro. +Daniel Fernandes, one of the many holidaymakers who posted videos about the dramatic fly-By in social media, said: "it flew twice really deep and there was a moment when it looked like it was going to crash." +Nuno Arroja added: "I was just surfing and it felt like the plane was down to me." +Tourists on the beach of Aveiro were panicked when the plane came out of the darkness and went incredibly deep +The Portuguese air force said today that the pilot of the P-3C Orion plane was on a training flight to identify fishing boats off the coast and had to fly so deeply that this was the only way to detect them. +The spokesman said that due to poor visibility conditions, the jet flew slightly deeper than usual due to poor visibility, but the air force insisted that security was at no time at risk. +Land fires have destroyed parts of the Portuguese mainland this summer, which also killed four people on the island of Madeira. +The Portuguese air force today announced that the pilot had to fly so deeply because of the circumstances - strong fog and fire smoke - which restricted his view +The plane was on a training flight where the pilot had to identify fishing boats as part of the exercise +Supercup: Barca with worries against Sevilla +Sevilla - FC Barcelona struggles on Sunday to take the first step to the first title win in the new football season. +The Catalans are competing in the duel around the Spanish Supercup against FC Seville, the replay rising three days later at Camp Nou. +The Doublegewinner must dispense with the inferior cupfinalist and reigning Europa League champion, among others, on Neymar, who is contesting the Olympic soccer tournament with Brazil. +Also missing is Goalie Marc-Andre ter Stegen. +The German suffered a change in the knee in the course of the training, thus settling the question at Barca at least for the time being in favour of Claudio Bravo. +The Chilean International and Ter Stegen have been competing for status as number one in Barcelona for two years. +Coach Luis Enrique has thus far waived a clear decision in this regard, leaving Bravo in the league but Ter Stegen in most of the rest of the competitions. +Before the first game of the new season, there are doubts about the fitness status of the team, which was humiliated on Saturday in a test match of Liverpool with 0: 4. +Also at 3: 2 in the Probegalopp against Sampdoria on Wednesday, Lionel Messi and Co. did not really know yet. +Sevilla, in turn, has to digest the 2: 3 defeat after extension in the European Supercup against Real Madrid and is aiming for the second triumph at the "Supercopa de Espana". +Barcelona, with eleven successes so far, is the record winner in this application. +Ma Long in a separate league to table tennis gold +Rio de Janeiro - The Chinese Ma Long is the new table tennis Olympic champion. +The 27-year-old defeated his countryman and "title defender" Zhang Jike 4: 0 (12.5.4.4) on Thursday in a one-sided final in Rio de Janeiro. +That brings the world ranking first to the Golden Grand Slam with success at WM, World Cup, World Tour Finals tournament and Olympia. +Bronze went to the Japanese Jun Mizutani. +The two Chinese made it into the final game as expected and made up the title with each other. +It was clear that for the third time in succession a Chinese would pick up the single title in the sign of the five rings. +Last non-Chinese on the top Olympic staircase was former SVS-NÖ-legionnaire Ryu Seung-min of South Korea. +Ma and Zhang were left alone at the plate, between the sentences and on time-outs they had no coaches at all. +Those had retired to the gallery and left their butts in fair competition on their own. +"The matches so far I have played for my country." +"In the final I am playing for me," Zhang said folly. +After the match, gold and silver medal winners with the China flag. +The match itself was unexpectedly one-sided. +Ma had really struggled with his 28-year-old opponent only in the first set. +After that, he set the pace at the plate and left Zhang with a total of 13 points. +By the superiority of Ma, it did not develop the expected matching match. +But there were still enough breathtaking balls to see. +Mizutani won the match for bronze against 40-year-old Vladimir Samsonov 4: 1. +The white rusher had suffered a rib injury in his quarter-final against German champion Dimitrij Ovtcharov, who was then in medical treatment, had to settle "ultimately" with Blech. +The Swedes Jan-Ove Waldner (38/2004) and Jörgen Persson (42/2008) were, by the way, in similarly high table tennis. +Donald Trump admits ″ huge problems ″ in election campaign +The US Republican leadership is plagued by massive worries about losing its majority even in traditionally conservative states. +Presidential candidate Donald Trump has now admitted weaknesses of his election campaign in the former Republican stronghold of Utah. +A rare moment in which the multi-millionaire and self-reliant multimillionaire said something like concerns, correspondents reported. +After throwing 16 rivals within his own Republican camp out of the race, doubts are now growing about his success in the battle for the White House. +"We have huge problems in Utah," said Trump before evangelical Christians he asked for support in key states such as Ohio, Florida or Virginia. +Blaming false reports about his candidacy, he again picked up his familiar media credentials. +Republican strongholds wraps up +Utah is usually a safe bank for the Republicans. +According to a SurveyUSA survey in June, Trump and his rival, Hillary Clinton, were on an equal footing. +Other institutions see Trump ahead, but not by the distance that is common for Republican candidates in the state. +Arizona and Georgia are also considered at risk. +In an interview broadcast by Sen. CNBC, Trump responded to the question of how he wanted to stop Clinton's march again: "just as I have done so far." +And afterwards: this will be "either successful, or I will make a very nice, long holiday". +He is doing nothing other than "telling the truth." +If it was not rich for him in the end, for reasons of political correctness, that is fine, Trump said. +Then I return to a very good way of life. +According to press reports, Trump's party should have threatened to withdraw funds to support his campaign, should he not be able to present better poll numbers. +Instead, the Republican Party's candidates for Congress should be given more support. +Olympics: triple fraud in doping test +The IOC wants to set up a disciplinary commission on the case. +Kenya's athlete is in danger after the second doping affair at the Rio de Janeiro Olympics. +After a fraud attempt at a doping control in the Olympic village, Kenya sent a trainer home. +The International Olympic Committee said it would immediately set up a disciplinary commission to investigate the case. +A Kenyan official had announced that the former sprinter and current coach, John Anzrah, had made a urine sample in the Olympic village under the name of 800-meter runner Ferguson Rotich. +This was reported to the team management of Kenya by the doping controllers. +The World Association of IAAF has asked the IOC for information on the case to appeal its own investigations, an IAAF spokesman said. +"Depending on the results of the investigation and the subsequent actions of the IOC, the IAAF will make an assessment," it said in an IAAF statement. +"He (Anzrah) has gone to the doping control station and has spent himself as Ferguson Rotich, the sample surrendered and signed," said Kenya's chief of mission Stephan Arap SOI. +He was in possession of the athlete's accreditation, which was on the list for training inspections of the World Anti-Doping Agency. +Ferguson Rotich was in Beijing World Cup fourth over 800 meters in 2015. +Four days earlier, Kenyan athletics delegation chief Michael Rotich had been stripped of the Rio Games. +He is alleged to have informed his country's money payments athletes about upcoming doping tests. +Media reports said he was arrested on his return at Nairobi airport. +Kenya has been under special observation at the IOC after numerous doping offences. +In announcing the more than 2000 doping target checks issued by the IOC before the Rio Games, it was unusually pointed out that particularly athletes from Kenya and Russia are being targeted. +The World Anti-Doping Agency had put a lot of pressure on the African country before the summer games in Brazil to create an anti-doping law and a functioning control system. +The law was passed a few weeks before the Olympics began. +As a result, WADA took Kenya from the list of countries whose doping control is in line with WADA rules. +Kenya is considered a major runner nation. +The country's athletics won the most medals at the 2015 World Cup in Beijing. +In a series of ARD television reports, there have been repeated accusations that doping funds are easily accessible in Kenya and that there should be a significant mentality of sports fraud. +IOC member Richard Pound last called for a similar investigation into Kenya as he had employed them in Russian athletics. +It has been demonstrated that there has been a systematic and systematic approach to this sport. +Russia's athletics were subsequently ruled out of the Summer Games. +Salzburg "West Side Story" with Cecilia Bartoli +In the Shakespeare year, the Salzburg Festival presents the "West Side Story" with Tony and Mary as a tragic love pair, similar to Romeo and Julia. +With a surprising Cecilia Bartoli. +A musical conquered Salzburg: the "West Side Story", Leornard Bernstein's masterpiece. +Artistic director Cecilia Bartoli wanted to bring the musical to the Temple of Classic and performed a youth dream with the role of Mary. +In the orchestra, the Simón Bolívar Orchestra led by the Venezuelan conductor Gustavo Dudamel: "this music is full of rhythm," he joked. +We always say that it is very Latin American. +There are many Latin American ingredients at their pace and their melody. +It is a wonderful blend, the perfect recipe for our orchestra. +I would say that we have Bernstein's music really in our blood! +In this staging, Bartoli plays an older Mary. +She remembers with sorrow at her favourite with Tony, while the younger Mary plays and dances. +The role of Mary has always fascinated me. +First, because it is musically exceptional! +And then there would be Marias personality. +She says it in her song: "I feel pretty, oh so pretty, I feel pretty and witty and bright." +So she is wise, of course, also naive, and very passionate. +"She is very similar to me, my Italian character, which I have as a Roman," laughs Bartoli. +Dudamel is full of praise for the opera singer: "Cecilia is a wonderful artist." +It is such an honour for us to work with her. +She is an immensely generous person. +And Bartoli returns the compliment: "Dudamel is such an exceptional artist and very passionate!" +Conducting is a necessity for him. +You see it in any of his movements, in his eyes, it is his life! +It is such a huge opportunity to share this musical experience with him. +We both have a rather southern temperament, a fire, a passion and also a cheerful approach to life, which is very important at all! +For American director Philip Wm. McKinley, the "West Side Story" is highly topical: "this piece is about prejudice and fanaticism." +Today we have the refugees, then the Puerto Ricans went to New York, and the New York residents did not want them. +These are the same issues, and they are as meaningful today as they were then. +59 years later, the piece is still relevant. +London schoolgirl who joined IS was killed in Syria +Kadiza sultana, one of three British schoolgirls who left London last year to join ISIS, reportedly died in Syria. +The lawyer Tasnime Akunjee said her family learned of her death in Raqqa, Syria, a few weeks ago. +It was believed to have been killed by a Russian airstrike in Raqqa, the group's bulwark in the country, ITV News reported Thursday. +Sultana was 17 years old and, according to her family, died shortly after she pretended to leave the war-torn country and return to England. +"One can only hope that the only good thing is - as a reminder and warning to others that these are the risks associated with going into a war zone - stopping people from ever making that decision," said Akunjee. +In February 2015, Sultana and two other schoolgirls from east London climbed into a plane heading towards Turkey and then into a bus to the Syrian border. +Sultana's family has been told that she has married an ISIS fighter in Syria - and, within a few months, became the widow. +Reid says Clinton will remain in the case of an election victory at Garland as a candidate for the Supreme Court +Harry Reid, leader of the Democrats in the Senate, is convinced that the Democratic presidential nominee, Hillary Clinton will nominate Judge Merrick Garland for the Supreme Court. +Senate Republicans have blocked Garland's confirmation since his nomination by Barack Obama in March. +Senate majority leader Mitch McConnell believes the next president will appoint the successor to the late judge at the Antonin Scalia Supreme Court. +Reid said Thursday during a telephone conference that he expects Clinton to select Garland "with some degree of certainty." +A Reid spokeswoman later said he had not yet spoken to Clinton about whether she would nominate Garland and he speculated. +He praised Garland and said Clinton's team would not provide for unrest with a new candidate. +Garland is the top judge for the U.S. appeals court for the District of Columbia. +Raid said Republicans blocked the Garland nomination, were lackeys and aides of Republican presidential candidate Donald Trump. +He also noted that Donald Trump was unfit for the presidency. +Treats wants Nacktkalendar for "women and for men" +The Treats magazine is working with photographer David Bellemere to bring out a 1970s Pirelli-inspired calendar for 2017. +But instead of famous naked people, they would like to find the next generation of top models for their NU Muses Calendar for 2017. +Treats editor-in-chief Steve Shaw told us earlier this year that his nude magazine differs from Oldschool-Playboys because "Playboy is for men." +I am doing this for women. +He seems to believe that it does the calendar. +"We need to return to the depiction of timeless and classical nudity, in which both women and men feel comfortable and feel inspired by these images of a female body," Shaw said in a press release on the release of the calendars. +Women will want to participate in this project because it is a beautiful work of art. +Models can submit their pictures online or in person at open casting calls in Los Angeles and New York. +Turkey: Kurdish community expects mass exodus +"Anyone who does not adapt and praises Erdogan sits on packed suitcases," says the chairman of the Gülen-close foundation dialogue and world, Ercan Karakoyun. +In the short term, the Kurdish community of Germany expects tens of thousands of asylum-seekers to flee from Turkey to Germany. +In the medium term, it could even become "some hundreds of thousands", believes association chairman Ali Toprak. +Following the coup attempt by Turkish President Recep Tayyip Erdogan following the attempted coup, the Kurdish community is expecting a mass exodus to Germany. +"In the short term, I expect tens of thousands, in the medium term, with a few hundred thousand asylum-seekers from Turkey in Germany, if the Erdogan regime continues to fight the minorities and the democratic opposition," says association chairman Ali Toprak of the "world" of Friday. +Because the government overran Kurdish strongholds with punitive actions months ago, 500,000 Kurds inside Turkey were on the run. +After the sworn coup, secular and opposition ethnic Turks would be added. +Many will want to start again in Europe if they continue to be oppressed in Turkey. +"It cannot be that a state that takes even refugees is producing refugees in their own country," Toprak said. +The association's leader lamented the targeted settlement of Syrian Arabs in Kurdish, but also in ancient towns. +As a result, Erdogan wants to increase exit pressure on the remaining Kurds. +"They are the last large minority in Turkey, the Christian Armenians and Greeks have already been eradicated or driven out in the last hundred years," said Toprak, who is also a CDU member. +The association chief demanded that the federal government "position itself as strongly as Austria against Erdogan and his supporters." +In Germany, too, there is a "witch hunt" against Erdogan critics. +I do not feel safe in Germany for the first time in the last few months. +The German branch of the Gülen movement also fears the flight of many Turks abroad. +More Turks will seek asylum in Germany, especially Kurds and opposition figures. +The branding as a Gülen supporter destroys teachers and other academics. +"Who does not adapt and praises Erdogan, sits on packed suitcases, by the way, the Kemalists and secularists," said Ercan Karakoyun, chairman of the Gülen-near foundation dialogue and education, the "world". +As the newspaper reported on the basis of figures from the Federal Ministry of the Interior, the Turks, even before the coup, represented the largest group of asylum seekers recognised for political persecution in Germany. +At the date of 30 June, this was 11,386 people, representing almost 29% of the total eligible for asylum (39.625). +This survey is not based on war, poverty or lack of prospects. +According to the Basic Law, asylum is only justified politically, in other words by the state, individually persecuted. +Mecklenburg-Western Pomerania: "go where it hurts" +Strange Mecklenburg-Vorpommern: the locals do not get anything from the summer election campaign - and the holidaymakers from North Rhine-Westphalia are not allowed to choose the country day. +In Mecklenburg-Western Pomerania, they understood. +In 2021, the election will not take place again at the end of the summer holidays, and the Schweriner Parliament has already decided at the beginning of the year. +Because blighter than it has been so far, it is not: summer vacation, heat and land election campaign - that bites. +The locals, who are to be persuaded by the pollsters, are on vacation. +The vast majority of holidaymakers travelling in the country, on Usedom, Rügen or Hiddensee, are not locals, so they are not allowed to choose the country day. +In addition to this, there are practical problems: during the holidays, helpers hanging up posters, blowing up balloons, distributing flyers and counting votes at the end of the day are difficult to find. +Until September 4, 2016, the last day of the election, Mecklenburg-Western Pomerania, Mecklenburg-Western Pomerania has yet to campaign. +The hot phase, if you can say that at all, has just begun. +And it is also about something: Prime Minister Erwin Sellering, leader of a SPD/CDU coalition, must fear for his office. +The SPD, the strongest party since 1998, is now clearly behind the CDU in polls. +Exciting is how much novice AfD cuts off and what is left coalition dust. +Sellering, 66 years old and has been head of government since 2008, is making an almost unobtrusive campaign, seen by his granddaughters. +He travels through the country, distributes roses and chats a little with the people, just as his legendary predecessor, Harald Ringstorff, did. +Otherwise, Seelering has got cold feet and is blaming Chancellor Merkel on the inheritance of the AfD. +Her refugee policy, her "We create that" has accelerated the rise of the right-wing populists, which is likely to cost him the nice job now. +The CDU, with its top candidate, the Home Secretary Lorenz Caffier, has already experienced what it is like to campaign at the wrong time in the right place. +She has invited twice chancellor Angela Merkel to major rallies; Merkel's federal election circle is in the northeast. +But the target group did not vote, it was more North Rhine-Westphalia, Berlin and Saxony than Mecklenburger and Vorpommern. +"There was probably the majority from other states," said Vincent Kokert, general secretary of the CDU in Mecklenburg-Western Pomerania, recently in the NDR. +But it is also a pity to anyone from other corners of Germany to listen to Angela Merkel. +Otherwise, the Northeast CDU largely abandons the usual campaign stalls on marketplaces and in front of shopping centers with umbrellas and air balloons. +That, Kokert says, is just playing a "minor role." +The Union, too, has noticed that it is basing itself on the land, that it has to make an effort to find a wire to the people. +It is like the left, the SPD, the Greens: there is little in the way of the country. +However, the CDU campaigner Kokert's advice to his fellow activists is also self-defeating: "you have to go where it hurts, that is where the people are: Dorffeste, golden weddings, every birthday party must be used". +Because much is at stake, Sellering has now called his SPD for a particularly dedicated campaign. +In surveys, the Social Democrats were last with 22 percent behind partner CDU (25) and just before the AfD (19). +In the 2011 election, the SPD had still clearly won 35.6 percent ahead of the CDU (22). +The Greens, small party with seven percent in the polls, are likely to make the leap into the country day. +They make a modern virtue out of holiday hardship and largely put their campaign on the Internet. +"Online campaigning", it calls the country's president Claudia Müller. +Otherwise, green campaigners are embarking on track searches for local voters among holidaymakers. +Silke Gajek, the top candidate, winds straight up with a houseboat through the mecklenburgic lakes and still finds it beautiful. +Her impression: "election holiday in Mecklenburg-Western Pomerania is not a punishment". +B27-rehabilitation: restaurants suffer from closure +There is nothing to tinker with the speed with which the B 27 is being cleaned up. +There is a lot of praise for those responsible for the construction work, which starts at 5.30 in the morning and does not end until 20: 00. +"They have made it all pretty tender," says Elvira Tetzlaff of the jet petrol station. +That is a super team. +There is also no delay. +The construction site could be moved to the south at half-time by the end of October, and everything will be ready by the end of October. +Praise will also be given to those responsible for the construction work, for example when it comes to setting up temporary vehicles. +Since the construction site migrated to the south on Monday, and the closure of the Aspergstrasse in Ofterdingen has been lifted and the connection to ROTTENBURG has been restored, the traffic situation within the village has been relaxed. +Citizens can now move from Ofterdingen from the B 27. +The alternative traffic through the place seems to go back. +"There were some significant complaints there," says the deputy chief executive, Florian King, who is responsible for the transport management of the remediation. +The residents of Bachsatzstraße, Steinlachstrasse, Hafnerstraße and Weiherrain had to contend with more traffic noise, because many trails were searched and more familiar to their Navi than the signage. +Which resulted in some lorries being frantic in residential areas. +As the speed limits were also not observed, the municipality increased the measurement vehicle from Mössingen. +"There were significant overruns," says King, who turned himself in on the location on the spot. +Two to three per minute have already been blown away. +The quickest was traveling at 77 kilometers in the Tempo-30 zone. +Since the construction site has moved on, however, it has become calmer. +For the business people at the B 27, it is only a small consolation that for customers from ROTTENBURG the road is now open again. +Business people do not like to look in the cards. +But the fact that the B 27-refurbishment has led to revenue collapses leaves everyone who is asked to look through. +However, some are more and some less affected. +Who has less to do with the "end customer", that is to say, for other companies, for which the restoration has little impact. +Even in the case of the car company MAIER, Thomas Sulz speaks of a "slight decrease", but also admits that of course "the runner-up is missing". +Most battered are the locals along the road. +J. Albert Göhner, owner of the steakhouse, formerly crown, finds clear words. +This is already a threat. +Not just him, but all the restaurants have hit it "hard." +Customers from Hechingen, Balingen and Rottweil were missing. +We have to be happy about every euro sales. +The revenue losses put it at "well over 50 percent." +Road renovation has "thrown back its farm" by two years. +Half of his staff have made him redundant. +If I had a company with 4000 employees and half would have been made redundant, the policy would have reacted differently. +Instead, the President of the Government, Mr Jörg Schmidt, responded to a request from Göhner on whether there could be financial compensation, with the reference that the restaurant would otherwise benefit from the benefits of the situation at the B 27. now, it must also bear the disadvantages resulting from the refurbishment. +Göhner knows from other counties where such a thing has been more generous. +For all the complaints, Göhner is sure that his restaurant will continue. +After all, the family business has been here since 1715, he points to the long history. +He can understand that other regular guests are now less frequent because of the complicated traffic management. +If you can 't drive, it is nice somewhere else. +Göhner has no doubt that his regular clientele will come back after the end of the restoration work. +Despite the crises with BSE and bird flu, Göhner is keeping the impact of the B 27 building on its clientele for the biggest crisis its restaurant has experienced in its long-running history. +Six months of construction work, that is brutal. +It is constantly being screened in the name of the fight against terrorism. +After the recent attacks, Interior Minister de Maizière is now presenting a thick security package. +But what has a tolerance status to do with terror? +And what does the coalition partner say to all this? +Thomas de Maizière gives the reconciler. +All his proposals are "politically reasonable" to the coalition partner, says the federal interior minister at the presentation of his new security package. +They do not overdo anyone. +Other, more far-reaching points would first be discussed within the parties. +I am also involved in this. +As interior minister, however, he is interested in results and in a "achievable consensus" within the coalition. +Following the recent attacks in Würzburg and Ansbach, de Maizière has missed a little time before presenting his conclusions on security in the Republic. +However, these are all the more extensive. +Something is already known, announced: that a new security authority should take care of the cracking of encrypted communication is not new. +Nor is the fact that Germany has to implement several EU requirements on passenger data and weapons law. +The call for more video surveillance and personnel for security agencies is not surprising. +In part, de Maizière is launching a second attempt at proposals that have not been made with the SPD: he wants to criminalize sympathy for terrorist groups and strip jihadists with dual citizenship the German passport. +"That will be difficult points for the SPD," admits the CDU man. +He still thinks that this is reasonable and I do not ask for anything, which is not a chance for the coalition partner anyway. +A few new ideas also presents de Maizière. +They have it in part: it plans fast-track procedures for deportation and more opportunities to incarcerate people from deportation. +Refugees targeted in the country should first check their smartphones and disclose social media accounts for a security review. +In the case of refuges for rejected asylum seekers, he wants to make some even worse than before - such as those who commit crimes or deliberately throw away their papers to conceal their identity. +Some of it is politically and legally sensitive. +Some also do not work out and leave questions unanswered. +And on a number of points, where there is unequal treatment, the question arises: what does this actually have to do with security and terror? +Yes, de Maizière says it is important to differentiate between the issues of refugees and terror. +But it cannot be denied that the assassins of Ansbach and Würzburg were refugees. +Moreover, many people were worried about safety, given the high numbers of refugees. +And things that people deeply employed could not be left out in election campaigns. +Internal security has been very much in the spotlight. +First the attacks in the neighbourhood: Paris, Copenhagen, Brussels, Nice. +Then the attacks in Würzburg and Ansbach. +There is a great deal of uncertainty. +And yes, there are election campaigns. +The Union and the SPD are therefore increasingly in position on the subject of internal security. +Over the past few days, it has been high between the two parties. +Only a gardening dispute over equipping the federal police, then over a security policy collection of some Union interior ministers, in which the department chiefs also call for a burqa ban and a departure from dual citizenship. +De Maizière is also looking for conciliatory tones. +He does not think there is any departure from the double pass. +We have been satisfied with the discussion in Germany. +To reopen it does not make sense. +And in a burqa ban, he has constitutional concerns. +Whether his own package is constitutional on all corners, and whether it is actually "reasonable" for the coalition partner, has yet to show up. +There is a lot in it that could cause a dispute. +But the SPD, too, is currently trying to capitalise on the issue of internal security. +Party leader Sigmar Gabriel has signalled a cautious willingness to talk and says: "the SPD is ready to talk about anything that helps to further increase security." +Volkswagen is still getting through. +Despite diesel scandals, delivery figures rise worldwide +But not all markets are running around. +In the case of recall, there is a term. +Volkswagen will start deliveries in the second half of the year. +Despite diesel affidavits, Europe's largest car manufacturer has continued to show a plus in the past year, thanks to its many brands and some well-run markets. +However, in July, the core brand VW weakened, especially in Western Europe, and thereby reaped the total sales, as notified by the company in the Dax. +Worldwide, the VW brand sold in July with 449100 cars 1.8 percent fewer vehicles than in the previous month. +In Western Europe alone, after China the second most important market, sales were up 14 percent below the previous month. +In Germany's home market, deliveries rose by almost one-sixth. +Brand sales chief Jürgen Stackmann led the weaker figures from July mainly to two sales days less in Europe. +In addition, there has been a buying back in some core markets through "changing economic conditions". +In addition to the situation surrounding the coup attempt in Turkey, the British voted to leave the EU, a spokeswoman said. +In the US, where the exhaust affair escalated first, a minus is also on the way. +Great support for VW is the Chinese market. +Overall, the mainly affected domestic brand of Lower Saxony is still gagged by the diesel scandal: after the first seven months, it is only an extradition minus 0.9 percent to 3.37 million vehicles. +Group sales chief Fred Kappler continued to show a sales stream from January to July. +1.3 percent more vehicles delivered Volkswagen in that time, worldwide 5.904 million. +Volkswagen had tampered with a software exhaust test. +In Germany alone, VW is calling around 2.5 million cars for conversion to the workshops. +In the course of the conversion, VW confirmed that the conversion of cars has no negative impact. +After the conversion of the vehicles, there is no deterioration in fuel consumption, CO2 emissions or engine power. +The car manufacturer provides the customer with a "guaranteed" certificate after the conversion, but I am not talking about a "guarantee", as was stated in the company circles on Friday. +The reason for this is legal niceties. +The "Focus" had reported that Volkswagen now guarantees its German customers a guarantee for converted diesel models. +This would have confirmed VW representatives in the Federal Transport Ministry last Monday. +The Ministry of Transport confirmed that there was this meeting. +"VW must fully comply with the conditions of my commission of inquiry and the KBA." +"Deviations from them will not be accepted," said Federal Transport Minister Alexander Dobrindt (CSU), according to the ministry. +VW has taken over the guarantee that there will be no deterioration in fuel consumption, CO2 emissions or engine power after the conversion and that all type-approval relevant vehicle values remain unchanged. +Volkswagen itself uses the term "guarantee" but not, as it was said in corporate circles. +With the broad term "guarantee", Volkswagen sees the possibility that, for example, customers will be able to come back to the new software half a year after conversion - and this could return to the new software, even if the damage has nothing to do with it. +It is also important, in the interests of the customer, to avoid the possibility that any other damage that has nothing to do with the Abgassal scandal will lead to uncertainty regarding possible warranty arrangements, as has been said. +That is why VW does not use the term ' guarantee '. +Raiffeisenbank Gmund am Tegernsee demands punitive interest rates from wealthy savers - as the second institute in Germany. +Bank chief Josef Paul said Thursday: "it is only about 139 customers who parked 40 million euros on giro or daytime bank accounts." +The German Bundesverband Deutscher Banken speaks of an individual case and does not see it as a signal: normal savers would have to "not worry about paying for their Spartan penalty." +Camp banks money overnight at the European Central Bank (ECB), they have to pay their 0.4 percent penalty rate. +As of September, Raiffeisenbank Gmund will require private and corporate customers to spend more than 100,000 euros on giro or daily money accounts. +"The first 100,000 euros are free." +"The next 100,000 will cost 400 euros a year," Paul said. +He has been hitting EUR 40 million for some time, which could be lifted from one day to the next and which he could not use. +"Those are with me on the central bank account and cause 0.4 percent costs," the bank chief said. +"I cannot lay down for every million 4000 euros." +In accordance with the ' polluter pays ' principle, the cost is now continuing. +Leaving the cash simply in the Raiffeisenbank's coffers would be far too dangerous: "I have already experienced four assaults, I do not want to be the fifth!" said the bank board. +Most customers would have understood and switched to other forms of investment. +Only a few migrated to other banks. +The Bavarian Cooperative Association said: "the ECB's extreme monetary policy is causing significant costs at all banks." +To wear it on its own is ' not possible in the long term '. +Some German banks have therefore increased their fees for account management, credit cards or transfers. +With punitive interest rates for deposits from three million euros, the Thuringian People and Raiffeisenbank Altenburger Land had made headlines with its Skatbank branch in 2014. +Michael Kemmer, chief executive of the banking association, said: "we do not expect private customers to pay nationwide fees for deposits, the competition in Germany among banks and savings banks is far too strong." +One banker said that at Tegernsee, there is "a clientele that is somewhat more exuberant from the assets." +"That can become a problem for a small bank" if it hires free money. +The cooperative bank Gmund, founded in 1911, has branches in Bad Wiessee, Rottach-Egern, Kreuth and Tegernsee. +Well-known actors, athletes and entrepreneurs live in the region. +The Bavarian Confederation "is currently not known to any other banks that charge an outlay for deposits from private customers," said spokesman Ernst. +The President of the Bundesverband der deutschen Volksbanken und Raiffeisenbanken (BVR), Uwe fröhlich, declared at the end of June: "the threshold to go negative towards the private customer is very, very high". +The competition is tough, and it drops the drain on investors. +Customers in Germany will not like it in width. +Destination plates: who is actually buying records? +Lonely middle-aged men love plates. +Before you rush to the commentary to sow it under the pseudonym of non-alleys with rough insults, this statement is derived from current data. +According to YouGov, the much-discussed resurgence of records is not due to a boom in millennials who want to welcome the news of physical objects, but to midlife nostalgia. +Those who have recently bought a plate are most likely to be aged between 45 and 54. +In fact, the 18-24 age group is the most unlikely buyer group. +It is also not hordes by hobby collectors - it has an emotional meaning: older record buyers are more likely to keep their feelings for themselves (56% vs. 53%) and enjoy spending time alone (69% vs. 66%). +But do the results of YouGov vote? +If this blog were a news report on television I would follow the camera while running in the middle of a busy street in Soho, wearing a modest grey suit, wearing a modest gray suit before standing, holding my hands and saying something determinate like: "so let us take a closer look at it." +So, let us take a look at it. +Even though the heart of Sohos is slowly losing its charm - hotels, restaurants and offices now fill the buildings in which once independent sellers were based - there are still a handful of fantastic record stores. +I would probably ask the cameraman to turn off the camera for the next part, in which I am in close proximity to various men in such shops and try to gauge their age and mind through observation. +Stuart from Glasgow, 55, whom I got from Sister Ray (data number: two young women, three men of middle age) into Reckless Records (data number: eight men middle age, a woman, presumably around the 20), is a day long because of a meeting in London and goes through the shops to fill the couple of hours. +Is he a collector, I ask? +"I appreciate already," he says. +I have about 3,000 or 4,000 plates. +These records, pictured above (he sent me the snapshot by e-mail, I did not follow him home), dress up the walls of his living room. +The reason he owns such a significant number of albums and singles is the result of his disposable income: he is now able to buy records he could not afford when they appeared and again bought items he sold when he was young and plucked. +"A lot of things I buy are from the late sixties, early 70s, which appeared when I was 11 or 12, things where I was probably a little too young to buy them," he says. +He agrees that those who buy plates are more introverted and would like to spend time alone, adding: "I do not smoke and I do not drink very much. +That is my truck. +WEZ, 25, who works at Sister Ray, also believes that many clients he meets will apply to the YouGov profile. +However, he has also noticed a new wave of people influenced by the media pub, people who have heard about the comeback and are looking to buy back their old records. +From the conversations I have had, people usually got rid of their collection in 1998 or 1999. +Customers who once sold their records to buy CDs are now selling their CDs to buy their records again," he says. +That would explain the boom to supporters of the record reviewer of a certain age. +But what about the supposed emotional importance of plates? +It only takes a few seconds in a store like Phonica to realize that record stores offer a reassuring community of like-minded people. +According to WEZ, some of the older customers took advantage of the contactless payment system. +Some record fans feel overwhelmed by the digital world and want to retreat to the stability of familiar record hulls, of objects that call for happy youth memories. +"I think sometimes it can be the filling of a void or possession of material possessions as a kind of consolation," says WEZ. +That is so with me as a collector and I think it is like that with a lot of people. +It is an easy way to deal with mentally. +"We are like their social workers!" flutes an employee from a record stack. +An ICM poll in April revealed that nearly 50% of people who bought a plate last month had not heard it yet. +The survey also found that 41% have a record player they never use, while 7% of those who buy a record do not own a record player. +At this time of the news report, I would probably look very worried while blowing through a stack of Bossa Nova compilations. +Jonny, 42, who works at sounds of the Universe (data number: three men of middle age), has noticed a "trophy aspect" of the revival. +"Someone just came here recently and said, ' I do not have a record player, but I would love to buy a Radiohead record so I can put it on the shelf, '" he says. +This is not a big percentage, but it definitely happens. +More product-laser, less musical. +We have people who say,"I do not have a record player." +These are younger people, not older ones, who are slow to come out. +Fopp, who has devoted the record to almost an entire floor, has a blower audience when I rehearse. +There are couples around the 70, tourists who take photos, teenage boys and middle-aged women. +Even if the atmosphere is slightly less relaxed than in the above mentioned shops - Wild Beasts newest synthesizer and sex-packed pop instead of experimental jazz drunk from the loudspeakers - it is good to see such diversity among customers. +None of them looks terribly lonely, but nagging mental trauma is hard to detect when standing next to someone for 30 seconds. +Elanora, 27, has been running around in the business for a few minutes and considers the variety of the plates for sale. +It is more of a showcase than a big purchase. +She does not deserve much, so collecting plates is not a real option, she says. +It costs a lot. +It is easy to hear music from a computer or other way, but the beauty of plates is... " she drives off with a loving sigh. +I do not know how to explain it - it is really unique. +My last stop is a business that is said to have inspired a new generation of record lovers: urban Outfitters. +While I seem to be giving the jeans hotpants to patterns, I watch a group of young teenagers who group up for a moment around Polaroid cameras before a father and his daughter consider buying a Crosley record player. +To the left is a staircase, a wall full of plates of Adele, Jeff Buckley, Amy Winehouse and Fleetwood Mac: a mix of contemporary music and classics, the essential records for an average collection. +Nobody sees them - perhaps because they are merely decorative, some so far above that it is impossible to touch them. +It is pure "record art." +But given that any attraction for these items means more money for the industry and could send some customers to the depths of Sohos for more, there is nothing to complain about. +It is no surprise that a population group that has more time and money than others is also the one that spends most on luxury items like plates. +Even though my research revealed that YouGov's results are true, they, at least in record stores in Soho, do not take into account the large number of female collectors and record lovers who exist in reality, record shops and in online forums. +These people probably work hard at school or in offices. +They certainly do not spend their Thursday morning strolling through record-setting shops of Berwick Street and leaves through plates as they mimic the startling look of an uncanny, 30-year-old false presenter who rises over the shoulders of nothing middle-aged men. +Greenland shark is the longest living vertebrate - video report +Scientific say that the Greenland shark has the longest life span of all vertebrates on the planet. +Julius Nielsen, who is investigating sharks, says the record was at a female that is believed to be between 272 and 512 years old and five feet long +French court rejects bid over demolition of shops in jungle refugee camp +A French court has rejected an offer by authorities in Calais to crack down dozens of makeshift shops and restaurants in the jungles of Calais, where thousands of refugees live. +At a court hearing this week, authorities in Calais argued that the state should be authorized to tear down 72 provisional stores where people inside the camp are selling goods ranging from cigarettes to energy drinks, offering hairdressers, or selling tea for 50 cents (40 pence) or simple meals for a few euros in makeshift restaurants. +The Calais prefecture argued that these places should be torn down because they would be a parallel economy from which no taxes would be paid and that pose a fire and sanity risk. +Humanitarian groups told the court that the shops and restaurants were important because the free meals offered by the government-backed association and other groups would not provide enough food for the growing numbers in the camp. +They also said that the makeshift shops and restaurants would often provide shelter and free meals for people in need. +A court in Lille ruled that there was no legal basis for the expulsion of people running the 72 provisional shops, but admitted that the concerns of Calais prefecture were "absolutely understandable." +The judge Jean-François Molla said the grocery stores, cafes and restaurants would play a much bigger role than merely feeding people who "live in extremely precarious conditions." +He said the areas offer quiet meeting points between refugees and volunteers. +One of the places threatened by the rainfall was the Jungle Book Kids ' Café of the camp, which is commonly operated, and 200 meals a day, English and French classes, as well as advice on asylum matters for the hundreds of vulnerable, unaccompanied minors in the camp. +More than 170,000 people signed the petition to protect the kids ' cafe. +In a letter to the Guardian, it said the closure would be "a disaster for these children, the youngest of whom is eight years old." +The two aid agencies Help Refugees and L ' Auberge des Migrants estimated on Friday that the number of people living in the jungle camp had risen to over 9000 people - the highest number so far - after a sharp rise in newcomers over the summer. +Despite Olympic disappointment: Martin remains combative +Despite his disappointing performance in Olympic time, cycling professional Tony Martin does not want to be subdued. +"I continue to keep the World Cup in mind, stay confident and fight on," the 31-year-old wrote Thursday before his departure from Rio de Janeiro on Facebook. +He does not have a statement for his miserable twelfth place on the sugar front. +"I honestly find it difficult to comment on yesterday's time," Martin said. +He had to analyse calmly the reasons for the debacle. +At the time World Cup in Qatar in October, Martin actually wanted to fight for the title. +"I am going to look at everything that we have changed recently." +"This includes my position," wrote the three-time time world champion who lost on Wednesday to the 54.5 km more than three minutes on Olympic champion Fabian Cancellara (Switzerland). +Olympics: tennis professional winners miss semi-finals +The winning streak of Laura Siegemund ended in the quarter-finals of Rio: the world rankings 32 from Metzingen missed by a 1: 6, 1: 6 against Monica Puig (Puerto Rico/WTA-No. +34) the semi-finals of the Olympic tennis tournament. +Siegemund, who was plagued by back problems, was able to pass her surcharge only once and was powerless compared to the previous rounds. +On Thursday, medal opener Angelique Kerber (Kiel/No. 2) had the chance to leap into the preview round. +The Australian Open winner met the Britin Johanna Konta (No 10). +As the last German tennis professional, Tommy Haas had picked up a medal (silver) in Sydney in 2000. +Two German DTB starters in the quarter-finals of Summer Games had last in 1992. +Never before was a German duo in an Olympic singles semi-final. +Group rises in start-up for live video game broadcasts +Watching other people playing video games is a giant trend - Microsoft also wants to benefit. +The technology group buys the start-up Beam, which specializes in this hobby. +How much money is flowing for the acquisition, Microsoft did not notify it on Thursday. +Beam first went to the launch in January and already has more than 100,000 users. +You can watch others in the game, but you can also intervene yourself. +For example, they can give the players missions and face enemies and provide equipment. +The game giant Activision Blizzard launches a new HD video service for the booming world of e-sports. +On the way to the global media event, Facebook is to help. +The advertising industry is already hoarding. +The staff of the start-up, which has its headquarters so far in Seattle in the U.S. state of Washington, are moving to Microsoft headquarters in the California Redmond, as beam co-founder and chief executive Matt Salsamendi said. +This means that the acquisition will not change for the customers. +According to Microsoft, Beam is integrated into the video game department around the Xbox console. +The market for live streaming of video game activities is growing rapidly. +Well-known platforms are twitch and YouTube gaming. +Twitch was bought by online retailer Amazon in 2014 - for nearly $1 billion. +YouTube Gaming is part of the Google Mother Alphabet. +Here comes the Enforcement trailer +Germany's Raser must adapt to the next generation of speed knives: in various German states, including Hesse and Brandenburg, new flash devices are being tested, which are meant to be particularly effective. +The futuristic Enforcement trailer of the Vitronic company from Wiesbaden can be used, for example, at accident points where it would be too dangerous for a mobile measurement by the police. +For example, at highway construction sites or rehabilitating bridges with temporary speed, there is often no necessary infrastructure to ensure that the speed limit is observed with a stationary flash. +However, a permanent mobile structure can be too dangerous or costly. +The Enforcement trailer is self-sufficient: its battery holds five days for continuous measurement operation, and the case data is transmitted encrypted over a modem. +Laser measuring technology can also cover all vehicles across multiple tracks simultaneously. +Variable speed limits as well as transit bans after time, driving strips and vehicle class can also be monitored. +In high condition you can move the trailer, according to the manufacturer, with each car with trailer clutch. +In order for it not to be simply cloned, it is lowered in the measurement operation, so that the wheels disappear in the armored and, by the way, shot-proof external hull. +In addition, a built-in alarm system is designed to protect the flash from vandalism. +Since 2015, according to Vitronic, the trailer has been tested in various federal states and is now also used. +Foreign authorities also flash the new technology: recently, France has recovered 100 pieces, following an order of 150 pieces last year. +Britain pick silver in 7-man rugby after Fiji Masterclass gold Holt +Britain's impressive performance at 7-under rugby came in the final on Thursday night to an abrupt stop at the last hurdle in the form of the Fijis when they were beaten with a score of 43-7 at Deodoro Stadium here in Rio. +Fiji gave a master class in handling, side-Stepping, relegation, line runs and raw power to win gold - their first Olympic medal of any color. +The defeat was sweetened by the not-too-poor consolation prize of the silver medal - Britain's fourth on that day - and they could well be proud of their efforts in this tournament, in which they beat New Zealand, Argentina and South Africa. +The Boks ' clear defeat, 7-5 in the semifinals on the same day could fall back on them in the final. +But regardless, Fiji would have beaten a 15-man team in the best form in this form. +It could be a consolation for GB - but will probably not - that at least one Briton will have a gold medal around his neck tomorrow: Fijis head coach Ben Ryan, the former boss for England from Wimbledon. +GB had a difficult road behind. +Eight years ago, they lost under Ryan every game at the Adelaide sevens. +Here, they lost only one. +This sleep will hurt, but the progress is amazing. +Fiji started wonderfully and let the attacks GBS out of fun. +The World Series winners went 5-0 up when Osea Kolinisau rallied in the corner. +With still four minutes of playing time, Jerry Tuwai added another attack from the right corner he converted. +12-0 and GB barely touched the ball. +A heaving run by Mitchell stopped the mountain of man Leone Nakarawa reaching a third gate, but it only stopped Fiji. +In the seventh minute, Jasa Veremalua put a touchdown in the right corner and it stood 0-17 for GB. +Nakarawa added a new one since the rematch and there was still over a minute of playing time... in the first half. +Vatemo Ravouvou pressured through further weak Tacklings of the GB team and stormed to the line to make a gate. +The conversion brought a 29-0 lead to the break. +It is as if Fiji was born to play the 7, while GB still learns. +That is how it is. +GB led fundamental changes at half-time and closed the Fijian gap... for whole four minutes, which was good for the conditions of the first half, until Josua Tuisova went through after a brilliant midplay from Fiji. +Dan Norton launched an attempt for GB, made a touchdown in the left corner for a 36-7, but the game had long been in favor of South Texans, whose fans sang, waved flags and danced in the grandstand. +It was not hard to admire Fijis's playful approach. +Mata Viliame set the i-goaltender with another try in the final seconds. +The Pfiff tweeted, the Fijis hugged themselves and GB kicked smashed in the lawn. +Earlier in the day, Fiji had defeated Japan in the semi-finals with 20-5 defeats and Britain pushed South Africa in a tight semi-final match from the race - Britain's conversion of the difference. +Kyle Brown brought the Boks forward in the first half, but Dan Norton broke the line with an impressive footwork and scored a gate under the posts in the second half. +A brilliant late Tackling of Marcus Watson, the brother of Anthony of the English 15-Aside team, secured the win - and thus the silver medal. +Helen Glover and Heather Stanning inspired by battle with trainer's cancer to rowing victory +There will be no more emotive gold than in these games, and that is what they want. +From the first rowing strike to the last, 220 hard Hieve that went into history, Helen Glover and Heather Stanning found an extra meaning in their golden moment at Estacio da Lagoa. +Even if it was only those who sat at the helm, there were three voices in the boat, the echo of the trainer Robin Williams, who was present at the second Olympics in succession without a tax woman, the first women in the history of British sport who set such a benchmark. +Their dominance was absolute, after all, their 39th unprotected use, which is also unprecedented. +What we see are two brilliant athletes who glide over the surface with the elegance of swans, which does not reflect the nature of triumph. +Behind every gold in the rowing is a battalion of willing helpers who contribute to the incremental advances that make up the difference and no one was more helpful than the coach who, 30 months ago, did not know if he would survive that day at all when he was diagnosed with cancer. +As he said, he was risky. +I had bladder cancer, which is operable and they did. +If you do not, it is spreading everywhere. +It would have been a pretty bad situation. +It changes a little bit of the outlook. +Williams was diagnosed in December 2013. +The trio was lucky that he was able to start treatment in early 2014, outside the season, which kept the break to a minimum, in case that is the right term in such circumstances. +I needed money, so I had to get better soon. +It was an incentive. +I was in the hospital and ran around the station - 20 feet, 30 feet, 50 feet at a time when they said some steps would be enough. +That is how it starts. +Rowing in itself is a challenge, but that makes it an even bigger one. +In the immediacy of victory, her first thoughts went to Williams, who spent a nerve-wracking morning talking a bit more than usual, trying to process his own fears. +Stanning, who was a principal in the Royal Artillery Regiment in a deployment in Afghanistan, said "I was an emotional wreck this week, which is perhaps something extreme, but it means so much." +It just repeats how much I mean, how much I and Helen and Robin have worked. +It has been three fantastic years with Helen and Robin. +Without Robin we would be no one, so a massive thank you to him, he is the best coach in the world. +I could not have a better person to train or want a better coach. +Helena Glover and Heather Stanning have not lost a race in the last five years. +The pair had a tough rhythm with which their opponents could not compete. +Even in the last 500 meters, when teams from New Zealand and Denmark began to catch up, Stanning and Glover had too much in reserve. +We were caught very much at the moment. +Helen called "stay in the process, stay in the process." +It is really important not to get carried away. +We had a good start and at the same time we were not looking to make something Tolles. +We did not want fireworks today, we just wanted to get a good result, go out and win the race, which is what we did. +The couple will take a time-out for a year before making any decisions about his future. +Glover must appear next week at a wedding, her own with the TV adventurer Steve Backshall. +Now she just wants to enjoy the moment. +I did not want to say that was my last race. +That would have meant too much pressure. +In London, it took about six months to understand that I am an Olympic champion. +It was all so new to me and I was so stressed. +It took about four minutes. +That feels so much better," she said. +31 years of exemplary clarity +The managing director of the water association "Veitensteingruppe", Ruppert Göller, is retiring. +The association is regarded as a "Bavarian model". +A small Franconian drinking water association as a role model for the big water producers. +That is how it was said some time ago in the original tone in a post by the Bavarian radio. +Little later, the Water Forum of the Government of Lower Franconia paid tribute to the association. +The work of the Veitensteingruppe yellow "bayernfar as exemplary". +Behind all this is Rupert Göller, who has been a member of staff for 31 years, 28 years as managing director. +He was now retired at the age of 65. +The drinking water association of the Veitensteingruppe, based in Kottendorf, municipality of Breitbrunn, promotes about 150000 cubic meters of water annually and provides 32 places and hamlets with about 5500 inhabitants. +The municipalities are the municipalities of Kirchlauter, Breitbrunn, Lauter, Ebelsbach and the city of Baunach. +There are water supply contracts for other cities and municipalities. +The current chairman, Breitbrunns Mayor Gertrud Bühl (FW), recalled that Rupert Göller was recruited as a water wart in 1985 and was appointed Managing Director of the Purpose Federation in 1988. +"His duties have been very diverse and they ranged from water management and maintenance work to office and organizational activities, budgeting, calculating fees and contributions to emergency operations at weekends," the chairwoman said. +As outstanding events it called the commissioning and inauguration of the new wells (1994), land acquisitions in the area of new wells (1998) and compensation for farmers, the rehabilitation of the reservoirs (1999), the acquisition of a central computer control (2004) and the partial renewal of water pipes. +There has been no standstill, and there have been repeated innovations because water is living and drinking water is the most important food. +In her Laudatio, she praised Göller's faithful, reliable and correct service over 31 years. +He has worked with a great deal of heart for his water purifier, and he has lived up to the water purifier as if it were his own company. +A few weeks ago, as a true practitioner, he was able to present the concept of success of the Veitensteingruppe to reduce nitrate before the Water Forum of the District of Lower Franconia. +He has received a great deal of recognition and praise for this. +Rupert Göller, for his part, praised water wart Alfons Griebel, who worked with him for 28 years. +He is the best water goalkeeper and he was a faithful crisp. +Together we were an unbeatable team. +As highlights from his point of view, he described the Brunnenbau and the restructuring of the purpose association. +The biggest challenge and the most difficult use, however, was the piping on the high container at Kirchlauter on a 3 January. +Here we had to work at minus 17 degrees all night so that the villages could be supplied with water. +It was also possible to maintain the supply of Neubrunn, because it was filled with hoses. +The management of the drinking water association was handed over to Daniel Stürmer from Lauter, who is the successor of Rupert Göller. +The soprano Anna Netrebko goes openly with the autism of her son Tiago - and turns to other concerned parents: "you have to have the courage to talk about it." +"The medicine has made great progress," said the 44-year-old Italian newspaper Corriere della Sera. +When the disease was detected in her son, she believed she had to die. +The eight-year-old Tiago, however, was well ahead and now learning privately in New York, where there are the best therapists. +"To give an example: if I ask him something, which is two years back when I sang at the Milan Scala, he remembers nothing," said Netrebko. +But he is the happiest person on earth. +Tiago comes from Netrebko's connection with Bassbariton Erwin Schrott. +She is now married to the tenor Yusif Eyvazov. +Relationship STAT in Bargteheide - man shoots at life companion +A 35-year-old man fired at his partner at about 10: 45.00 a.m. on Friday at a multifamily house in Bargteheide (County Stormarn) and fatally injured her. +"The man himself called at us and indicated to have shot his life partner," a police spokeswoman said. +The perpetrator is on the run, after which he will be publicly punished. +Now nationwide, because Sven S. could be traveling by car. +The man is about 1.80 meters tall, muscular, brown, and has a gossip. +Meanwhile, police have released a photo of him. +It is a few years old, though. +Meanwhile, the man wears a glitch. +The man is not supposed to be addressed directly. +He could still carry the gun at himself, police said. +Anyone who sees Sven S. should call the 110. +The police are talking about a "relationship". +The victim was born in 1988, the perpetrator in 1981. +The police in Lübeck initially did not want to give details of the behaviour or the relationship between the perpetrator and the victim, but confirmed that a person had been killed. +"It is a killing offense." +"More we are not saying at the moment," said a police spokeswoman in Lübeck. +According to eyewitnesses, a Special Operations Command (SEK) was at the scene. +Steel - A ray of hope for the German steel industry +The crisis-ridden and energy-intensive German steel industry has been spared millions of euros in additional costs. +Financial strains that have threatened the industry from eco-electricity extraction are off the table. +It stands by the exemption from the renewable energy levy in the inventories of the German steel industry, said Federal Economics Minister Sigmar Gabriel (SPD) of the "Westdeutsche Allgemeine Zeitung" (WAZ, Friday edition). +"I am really pleased that we have finally been able to achieve this after two years of tough negotiations." +The European Commission had initially planned to ask the steel producers to use the gases from the blast furnace to generate electricity for their own consumption. +The steel industry threatened additional costs of 120 to 240 million euros per year, according to the German industry association. +Gabriel told the WAZ that there is now a basic agreement with the EU Commission following discussions with Commissioner Margrethe Vestager, Commissioner for Competition. +Only when the generators are replaced in the steel works will there be an EEG surcharge of 20%. +But this, too, is not being raised in the steel industry. +IG Metall welcomed Germany's agreement with the EU Commission on its own production. +This will largely establish the status quo of the previous regime. +Gabriel's successful effort for the steel industry was particularly important. +"In terms of our ' steel ' campaign, this is a first step." +"Others have to follow." +"Even in the reform of the emissions trading trade, climate and employment targets are to be weighed up," said IG Metall chief Jörg Hofmann in Frankfurt. +The steel industry in Europe has been suffering from overcapacity and a significant price pressure since the 2008 financial crisis. +Last year, the situation continued to deteriorate as the world's largest producer country threw massive steel onto the world market in the face of weakening domestic demand. +European manufacturers throw out Chinese steel group price dumping +Over the course of this spring, the situation has been somewhat relaxed. +On the one hand, import duties imposed on imported steel have an effect; on the other, the economic outlook in China has brightened. +It is unclear how sustainable the price recovery is. +German industry primus Thyssenkrupp remained cautious on Thursday. +Most recently, prices would have been more stagnant. +The industry is responding to the difficult situation with further cost reductions. +Last but not least, ThyssenKrupp did not want to rule out closures of individual works. +Some 86000 people were employed in the German steel industry at the end of 2015. +In July, German steel manufacturers remain cautious despite rising prices and increasing orders. +They produced, with 3.4 million tons, well six percent less crude steel than in the previous month, the economic association Stahl said on Friday. +After a brief increase in May, the manufactured crowd now went back the second month in a row. +Since the beginning of the year, production has been two percent lower than the previous year. +The association expects to increase emissions in the coming months thanks to an improved order situation. +Community, mind, health: singing does seniors well +The singing has accompanied Ursel Kipp all her life: as a young girl she was in the school choir, she studied music and today the 78-year-old sings in a seniors choir. +"Singing moves me - emotionally and physically," she describes. +After a sample, she feels balanced, cheerful and overall alive, she says. +By the way, she is doing something good for her health and her mind. +Because singing is a great hobby for seniors from several perspectives, says Erhard Hackler of the German Senior League. +Most seniors sing in the choir and share with like-minded the joy of music, describing Hackler. +Through regular meetings, seniors can establish and maintain social contacts. +Because social and family structures are often solved in old age, a choir is an ideal opportunity to spend time with other people. +This experience has also made Ursel Kipp in her choir: "to speak out and organize, to rely on the others and to learn from each other - a choir is a very special form of interaction". +Singing can be exhausting in the positive sense, says Hackler. +Because of this, seniors train a deep and controlled breathing. +If you ask for your lungs regularly, you will not be able to get out of the pste as quickly as possible. +Even when it comes to getting the sound of voice in age, singing is an ideal hobby. +To older people, singing often has a very special effect, says Ursula Lenz of the federal labor community of senior civil organizations. +In the older generations, the common singing had a much higher priority, it belonged to everyday life, both at school and in leisure, she explained. +Lenz frequently observed that singing or listening to songs in older people raises many memories, often associated with positive feelings of their teenage years. +Through lyrics and especially melodies, even dementia sufferers remember long past events. +When singing, the head is also required to perform a special performance, explains Lenz. +To concentrate at the same time on your own voice and on a predetermined rhythm and adapt to the other singers - this is a great cognitive challenge. +Especially older people, who live on their own, do not just focus on themselves. +Another positive aspect is the recognition of the singing in the choir, Hackler said. +An enthusiastic audience is a great praise. +Also, self-esteem grows by singing in the choir. +To show yourself: if I am long for something, I will get better and wake up beyond me - this experience strengthens. +Good reasons to start singing, so there is enough. +Anyone who wants to try a new hobby should not hesitate - even if he feels to have little talent, Lenz advises. +You are not singing alone - at 50 singing people, who is listening when a sound goes next? +In search of the appropriate offer, seniors have different options, says Hackler. +Singing someone from the acquaintance in a senior choir, you can easily join. +Many cities also offer overviews of the choirs in the surrounding area. +If you want to sing in a church choir, you can go directly to the town or church. +Many seniors can also be found on the Internet. +Anyone who does not have access to the Internet can ask the family, friends or neighbors to help with the Internet search. +Anyone who wants to sing should definitely join a choir, advises Hackler. +Singing does the soul well and has something liberating - that applies to any age. +Cats react more sensitively than hangover to cries of young animals +Biologists have studied in Hanover what effect the rowing of cat babies has on adult animals. +To her surprise, the males did not leave the males cold, but they were always the same as the females. +Female cats can recognize the degree of excitement of cat babies at the mixing of the little ones. +They respond by 10 percent faster to sounds of kittens who choose in great distress, as scientists have found out from the animal medical college and the Medical University of Hanover (MHH). +Hangovers also respond to the cries of kittens - but always the same. +"Apparently, the acoustic differences between the inhibition of less and heavily drowned young animals for the males are either unperceivable or not of significance," said the biologist Wiebke Konerding of the MHH. +She is an author of the study, which was published this Friday in the trade magazine "BMC evolutionary Biology." +In a previous investigation, the research team had already found that the duration and pitch of the kitten cries differed with the urgency of their need for assistance. +A total of nine adult cadres and eight females were observed from the MHH animal husbandry. +They were played for three minutes from the sausage box and separated from the mother and siblings. +On the other hand, they were confronted with cries of more excited kittens, which were raised in addition. +The researchers hold their findings despite the low sample for meaningful. +"All females, even those who had not yet had their own offspring, reacted differently to the cries," Konerding said. +They turned faster to the loudspeaker when that call played out of the much more drowning kittens. +This ability may be innate or develop with sexual maturity. +"A surprise was that the males reacted at all," the biologist said. +In the past, scientists have already examined the reactions of women and men to baby noise on a number of occasions. +Also, some studies showed that women were more sensitive to infants, whether they were mothers or not, the biologist Marina Scheumann reported. +Podolski attacks ' gala ' after Supercup +Hakan Sükür is a football legend in Turkey. +In Turkey, an arrest warrant has been issued against former football star Hakan Sükür. +He is accused of being a member of a terrorist group. +For the first time after the attempted coup, a major football match is taking place in Turkey. +Before the duel of the archrivals between Besiktas Istanbul and Lukas Podolski's Galatasaray Istanbul around the Supercup in Konya, the official line is clear: "business as usual". +Even when the state of emergency was declared after the attempted coup in July, the government insisted that the daily lives of ordinary citizens should not be affected. +This does not, however, apply to those suspected of belonging to the movement of the preacher Fethullah Gülen, who is responsible for the attempted coup. +This does not stop before football. +The prosecution issued an arrest warrant against former strongman Hakan Sükür. +Thus, the South American now living in America is accused of being a member of a terrorist group. +South Africa is said to be supporters of the preacher Fethullah Gülen, who is blamed by President Recep Tayyip Erdogan for the coup attempt. +It is true that the state of emergency imposed for 90 days is still in force until October, but in fact it has virtually no effect on the lives of most Turks. +The nightly "democracy guards" in public places across the country, Erdogan said Wednesday. +Sport - like the whole country - is divided into supporters and opponents of Erdogan. +Especially fans of the workers ' club Besiktas are traditionally not among the president's friends. +What unites the majority of Turks, however, in the face of dramatic experiences in history, is the strict rejection of military coups. +Even the fans agree - no matter if their heart beats for Galatasaray or Besiktas. +At Pokalwinner "Gala" it will come back to Lukas Podolski again. +The Kölner in the past season proved his athletic value: with 17 goals and nine templates in all competitions, the 31-year-old finished his first season as the top scorer of his club. +In the final game against Fenerbahce, he scored the 1: 0 victory. +The newspaper "Fanatik" cheered him: "he was the best in the place." +He finished the season in an excellent way and his team secured the Cup. +Thanks to "Poldi," the disappointing season for the record champion was a conciliatory finish. +After the pre-round K.o in the Champions League, the "lions" also dropped out in the Europa League early on. +In the South Lig, it was only to rank six. +The season was not good. +The Cup was the only way to win something. +"That is what we did and that is the most important thing," said Podolski. +For Masters Besiktas, the game year ran better. +Especially thanks to Mario Gomez, who, with 26 seasons as a South Florida goalkeeper, put the base to the 14th title. +That is also the reason fans continue to hope for the 31-year-old's return. +In the case of the AC Florence under contract and Besiktas only borrowed Gomez after the attempted coup, he announced that he had failed to return because of the political situation in the country after his EM holiday. +"If Mario wants to come to us, he just has to say it," said the trade magazine "Kicker" club chief Fikret Orman. +To do this, however, the Stürmer would have to be prepared to renounce about a third of his annual salute estimated at 7.5 million euros, Orman said, adding: "his salary at Florence we cannot pay." +Despite doping: these athletes still have medal chances at Olympia in Rio +The 34-year-old Justin Gatlin has already been jailed twice for doping (2001 and 2006). +Rio de Janeiro - Whistleblowerin Julia Stepanowa is not allowed to start in Rio. +Other overturned athletics scorers can only laugh at this - they are fighting in Rio for medals. +The issue of doping remains the headlines at the Rio Olympics. +The Russian swimmer Julija Jefimowa, who complained about her starting right just before the Games after a doping ban, was mercilessly paused and booted out at her start (100 meters). +It offered a bizarre scenery: with a raised smile, she was still stumped into the hall and had provoked with her appearance. +When determined that she would not get gold, the audience broke into a jubilant storm. +But there are many other athletes who go to the Olympic Games in Rio, despite the doping past. +Here is an overview: +Justin Gatlin (100, 200, 4x100-m-staple/USA): the 34-year-old is one of the most controversial figures in athletics. +He had already been jailed two times for doping (in 2001 and 2006 to 2010). +Since his spell, the 2004 Olympic champion and ex-world champion runs even faster than before, he is over 100 m in 9.80 seconds the number one in the world and is regarded as the biggest challenger by Usain Bolt. +Shelly-Ann Fraser-Pryce (100, 4x100-m-Staffel/Jamaica): the two-time Olympic champion and seven-time world champion had to sit down a six-month lock in 2010 after it proved the intake of the painkiller Oxycodon. +She had strong toothache after an operation, defending the 29-year-old. +Sandra Perkovic (Discus/Croatia): in 2011, the 2012 Olympic champion, world champion of 2013 and European champion from 2010 to 2016 tested positive for the banned stimulant medium methylhexanamine. +Perkovic denied the knowingly ingested and was jailed for six months. +The four widest worshippers this year go to the account of the big gold favorites. +LaShawn Merritt (200, 400, 4x400-m-Staffel/USA): the Beijing Olympic champion and two-time world champion over 400 metres, was positively tested in 2010 and jailed for 21 months. +One of the means of pencilling was responsible, Merritt said. +This year, the 30-year-old is over 200 and 400 m the world's fastest man so far. +Iwan Tichon (Hammerthrow, Belarus): hardly an athlete has been deprived of so many medals afterward. +So Tichon lost his 2005 World Cup title nine years later after being identified with testosterone doping. +The 40-year-old also had to surrender Olympic silver in 2004 because of steroid doping and the 2006 EM title because of testosterone abuse. +He also received the bronze medal of the 2008 Olympic Games because of a ruling by the International Sports Court of CAS. +At 80.04 m, he is on rank two of the world rankings. +Liu Hong (20 km walking, China): the world record holder and gold favorite was tested positive only in May, but may still start in Rio. +The 29-year-old World Championship found evidence of the use of a banned dietary supplement, the blocking of the World Anti-Doping Agency WADA was mild and went off as early as July 13. +Bomb blast in Thailand - Austrians injured - multiple deaths +The Austrian embassy in Thailand is in contact with the woman, said the Foreign Ministry spokesman, Thomas Schnöll, Friday morning. +She suffered cutting wounds and was treated in hospital, but has already been able to leave. +Her home trip was scheduled for early September. +It is still unclear whether the further explosions on the island of Phuket and the southern cities of Surat Thani, Phang NGA, Trang and Chumphon also affect Austrian citizens. +The Foreign Ministry is in constant contact with local authorities in this regard, Schnöll said. +In the approximately 200 kilometers (30 miles) south of the capital, Bangkok, Hua Hin was first seen exploding two bombs in a nightclub on Thursday night. +According to police, a Thai woman was killed and some 20 people were injured, including the Austrian, three Germans, three Dutch and three Italians. +Friday morning, two explosive devices went up again, and another person was killed, according to the authorities. +Phuket also reported a bomb explosion in the morning. +A taxi driver was injured in the detonation near the Badestrands Patong, which was popular with holidaymakers. +Another bomb exploded in Surat Thani on the country's southeast coast, killing an urban employee. +The explosive device had gone into the air, according to authorities in a flower shelter in front of the site of the coastal police. +Finally, detonations in Phang NGA and Trang on the southwest coast, as well as in Chumphon, on the southeast coast, claimed several injured. +One would go from a link to the explosions in Hua Hin, it said. +"The bombings carry the same handwriting," said army general Danai Kritmethavee Friday morning before journalists. +"We assume that this is a coordinated attack." +It is too early to comment on possible motives, but it is probably the actions of Muslim rebels. +Thai media also wanted to identify a pattern in the attacks, typical of the bombings of Muslim separatists in the south of the country. +The Thai police, however, said the attacks were not related to the Islamist insurgency or with international terrorism. +"That is just local sabotage, which is restricted to limited areas and provinces," said a spokesman in Bangkok. +Rather, it is assumed that the bombs were laid by opponents of the ruling military junta. +Authorities would have received intelligence evidence of imminent attacks in the south of the country in the past few days - though they had not been informed of the exact timing and location. +It is still unclear which group is behind the attacks. +Police instructed their officials across the country to step up security around key government buildings as well as airports, train stations, tourist attractions, restaurants and entertainment districts. +There are always smaller bombings in Thailand, but they are mostly not against tourists. +In Hua Hin is a palace used for years by Thailand's King Bhumibol Adulyadej. +After the current bomb explosions, the Austrian Foreign Ministry recommends on its website to follow the instructions of the Thai security authorities. +High security risk (level 3) applies to the provinces of Narathiwat, Yala, Pattani and Songhkla, as well as Preah Vihear and the surrounding area. +There is no need to travel to these provinces after disputes between security forces and Muslim populations. +Increased safety risk (Level 2) applies to the rest of the country. +The attacks on Thursday and Friday came a few days after a controversial referendum on a constitution drafted by the military junta. +It also gives the military great influence in the years to come. +Junta chief and Prime Minister Prayut Chan-o-cha said the bombs had been an attempt to create chaos as the country moves toward stability, an improvement in the economic situation and tourism. +The military unta, which seized power in 2014 after a period of bloody unrest, is benefiting itself in bringing the kingdom back to stability and order. +However, the military has also failed to rein in the insurgency of Muslim rebels, which has been languishing in the far south of the country for years. +More than 6500 people have already been killed in the conflict. +Just under a year ago, in Bangkok, 20 people were killed in an attack on a popular Hindu shrine - most of them foreign tourists. +It was the bloodiest attack in the country's recent history. +The right-wing "identity movement" has been targeted by the Federal Office for Constitutional Protection. +According to several national offices, the constitutional protectors in the federation have also placed the group under observation. +"We see in the ' identitarian movement ' evidence of aspirations against the liberal democratic basic order," said constitutional protection chief Hans-Georg Maaßen of the German Press Agency in Berlin. +Thus, immigrants of Islamic faith or of the Middle East are being defamed in an extremist manner. +That is why we are watching the movement. +The "identitarian movement" is a grouping with French roots, which has been active in Germany since 2012. +It is opposed to "multiculturalism","uncontrolled mass immigration" and the "loss of its own identity by over-alienation". +Constitutional protectors in nine states - Bremen, Bavaria, Hesse, Berlin, Baden-Württemberg, NRW, Lower Saxony, Saxony and Thuringia - are already watching the "identitarian". +Maaßen said his authority had agreed closely with the national offices in the decision. +"Groups like the ' identitarian movement ' are trying to pick up their target group where it stands," said the constitutional protection chief. +In general, extremists try to raise them with youthful language, often with pop music. +Islamists as well as right-wing extremists. +This is not an advertisement for your own cause. +The propaganda is supposed to appeal to people emotionally. +Young people are particularly vulnerable. +This is dangerous. +Most recently, there have been reports from several federal states about contacts of "identifiers" to AfD politicians. +Maaßen said he did not have any findings. +For constitutional protection, possible contacts of this kind are only relevant from a certain point of view. +It depends on whether the respective party - in this case the AfD - by certain individuals who are extremist, changes their target and becomes so extremist. +The decisive factor, therefore, is whether such persons have a controlling influence on the party. +This is not apparent. +In view of the marked increase in the number of crimes committed and attacks on asylum seekers and refugees, he said that he would not speak of new right-wing terrorism in this context. +In recent years, however, we have found that there can be right-wing terrorist structures. +There was the Old School Society or the Freital Group. +It may well be that there are other right-wing extremist groups or micro-groups who are planning attacks against asylum seekers, against refugees or attacks from other extremist motives. +However, a Germany-wide or Europe-wide control of right-wing terrorism is not visible. +The previous groups were created at the regional level or in social networks. +Worried about the fact that there were many attacks on the account of people who had not previously appeared on the right scene. +That is the worrying thing. +Many of the suspects in attacks on asylum accommodation were not previously known as criminals, politically motivated criminals or supporters of the right scene. +"So many people have committed crimes that previously had nothing to do with right-wing extremists, who were perhaps politically indifferent or elected, for example, the CDU, SPD or the left, who then radicalised themselves through extreme right-wing extremism". +Rio 2016: Robel Kiros Habte becomes Internethit +The Olympic Games or world records do not always determine the headlines at the Olympic Games. +This shows the courageous performance of Robel Kiros Habte at the Summer Games in Rio de Janeiro. +In the Aquatics Center, the slightly overweight swimmer from Ethiopia was so slow that he could not be seen in the TV pictures at times. +He just disappeared - no matter how far the cutout was selected. +In the social networks, Habte subsequently became a viral internethite. +In fact, the 24-year-old finished his previous run with a back-to-back 48 seconds and clinched the 59th place of 59 starters. +But it was rather his not exactly sporting figure that attracted the attention of the international media. +Why the 24-year-old still participates in the Olympics? +The Ethiopian got a special start from the international swimming federation. +This is distributed to make swimming in under-represented countries more known. +Since most athletes are running in aesopia, Habte simply wanted to do something else. +Preparation is all: Robel Kiros Habte is ready for the big race. +The first nicknames quickly made the round. +Some media described him as "Robel the Wal." +Following a "welfare bite", the English tabloid "The Sun" was funny with "Dad Bod". +His time, he first struck with a minute and nearly five seconds left over the 100-meter freehand, played no role there. +Comparisons with "Eric the Eel" were also drawn. +At the 2000 Sydney Olympics, the run of Eric Moussambani provided media attention. +Unforgettable was the appearance of the swimmer from Equatorial Guinea, when he had to compete on his own in an advance over 100 metres. +Frenetic, Moussambani was fired at the time. +The then 22-year-old first learned to swim eight months before Olympia and had never completed such a long distance before the competition. +A seat at the forefront of the stunning architecture of the Los Angeles Central Library +Learn more about the history of the Central Library in downtown, as the Society of Architectural Historians/Southern California Chapter holds a salon with Arnold Schwartzman and Stephen Gee, the authors of the new book,"Los Angeles Central Library: a History of its Art and Architecture." +It is envisaged that Gee and Schwartmann will discuss and share images of the 1926 Bertram Goodhue design as well as the 1993 Restoration and addition of Hardy Holzman Pfeiffer Associates. +The Salon is scheduled for August 21 from 14.00 to 16.00 in the Salle Moderne in the Art DECO Southwestern School of Law, (formerly bullocks Wilshire), 3050 Wilshire Blvd. +Visitors can visit the central hall, the style rooms, the cactus-lounge and the Teesalon. +Only advance tickets; saw/SCC members, $15; non-members, $25. +An open industrial often in DTLA gets a cozy makeover +We celebrate the 90th birthday of L.A.'s Central Library with - what else? - a new book +Geretsried - The owner of a shop in the New Square has been bestowed. +According to police, the 67-year-old Geretsriederin had left her shop at about 5: 30.00 p.m. on Monday, forgetting to close a window on the ground floor. +When she came back the next morning at 8.15 a.m., around 250 euros had disappeared from the checkout. +Traces of the perpetrator could not be found. +Also, video surveillance is not available. +Trump sees looming election defeat not so tight +Republican presidential candidate Donald Trump speaks at a campaign event in Florida. +If there is nothing wrong with the election to the US president, Donald Trump already has an alternative video. +He will then go on holiday. +If Donald Trump loses the US presidential election in November, he would be relatively indifferent: "ultimately it will either clap, or I have a very, very nice, long holiday," the Republican nominee said in a telephone interview with the US television channel CNBC. +If it was not enough for him in the end, for reasons of political correctness, that is fine," trump said. +So he called U.S. President Barack Obama and the Democrats ' candidate, Hillary Clinton, a founder of the terrorist militia Islamic State (IS). +Within his party, there was more and more resistance. +Post rises in trade with electric transporters +An electric delivery vehicle from Deutsche Post in action. +The interest of other companies in the company appears to be large. +The Post is planning to sell its electric vehicle streetscooter as well. +Shortly, the Group intends to start trading with the transporter. +The Post wants to offer its electric transporters on the free car market as of next year. +"We want to get into the sale to third parties," a Post spokesman said Friday. +The company has been checking for months whether to sell its self-developed streetscooter, with the letters and packs, to other establishments as well. +Post Board Chairman Jürgen Gerdes had said that there are always enquiries, for example from craftsmen. +According to the news magazine "Der Spiegel", the Bonn Group is about to enter the mass production of the vehicles. +In the poetry factory, the company plans to build up to 10,000 cars a year and layer. +Gerdes had announced that the group wanted to significantly increase its fleet of electric cars and make a complete transition to environmentally friendly vehicles in the long term. +"We will take a very, very robust step towards 2020," he had said at the end of July. +I can imagine that we are switching the entire fleet. +The streetscooter has been active on Germany's roads since 2014. +GfK leader resigns after disappointing business figures +The consumer research company GFK is replacing its boss Matthias Hartmann. +The resignations came suddenly - but not entirely surprising. +The difficult situation of the market research firm GFK allowed the chair of CEO Matthias Hartmann to be all the more insecure the longer the success he promised. +Turmoil at the head of the Nuremberg-based market research firm GFK: after once again disappointing business figures and the resignation of the company's management, the world's number five industry faces a human new start. +GfK's board chief wants to leave the company at the end of the year. +The Chairman of the GfK Supervisory Board Arno Mahlert is already out of the supervisory body with effect from 12 September. +The management on the Board of Directors already acquired the previous member of the Executive Board, Gerhard Hausruckinger, on 1 September. +He is to formally assume the role of a "CEO" until a successor is found for Hartmann. +As a reason for the resignations, the company called "different views" on the long-term business orientation. +Details did not want to call a company spokesman Friday. +Anyone who will lead the market research company in the future is still unclear. +In investors ' circles, it was said on Friday that the disappointment of the further lack of success of the restructuring launched years ago had been great for shareholders. +Mr Hartmann has been at the GfK top since 2011. +"The fruits of the restructuring, however, are not yet visible after 5 years," it said. +Given the latest bad GfK business figures, each shareholder will eventually be restless. +"If that were the case at BMW, that would also make the quandts like that," it said. +The company had also failed to halt its loss in the second quarter of 2016 after setbacks in the previous quarter. +At 361.2 million euros, sales were 6.1 percent below the level of the comparable prior-year quarter. +Related to the first half of the year, sales shrank by 3.4 percent to 721.2 million euros. +The gain in the second quarter mainly weighed on the company's sunken value in the face of its difficult economic situation. +The company's depreciation of EUR 139 million, which was necessary in the Consumer Experience business, gave the Group a loss of EUR 148.2 million. +In the second quarter of 2015, GFK still generated a net profit of 19.7 million. +Accidents - bus slips into crumbling in ditch: eight injured +Eight people were injured in a bus accident involving 43 seniors as passengers were injured Thursday in Krummlistened (Landkreis Aurich). +Two of the occupants suffered serious injuries, police said. +According to her data, the 66-year-old driver of the bus of a travel company Eisenach had to avoid a load of debris that drove on the tram. +The bus came to the right from the street and slipped into a ditch, police spokeswoman Aurich/Wittmund reported. +"Because of the location of the bus, people could not leave the bus independently," she said. +The fire department freed the occupants. +Six rescuers and an emergency cart came to the accident site on the road 2. +The uninjured travelers were brought back from a line bus to the Krummlistening district of Pewsum. +There, they should wait for a replacement bus from the travel company. +Investigators called on the truck driver and possible witnesses to report to the police. +The fee per cubic metre of waste water is from 1 October 2016 for the area of Neudorf/Reuth/Welschenkahl 3.44 instead of 2.10 Euro; for Zultenberg/Lindenberg/Lopp 3.36 Euro (previously 2.26 Euro) and for Azendorf 3.64 euros (so far 2.18 euros). +At the Azendorf plant, the waste water fee will increase again at the latest when appropriate improvement measures are needed. +After an over-the-counter calculation, the wastewater price in Azendorf will then be at 4.37 euros per cubic metre. +As Mayor Bernd Steinhäuser (CSU) reported, when the budget was approved by the Landratsamt Kulmbach, it was found that these waste water plants were going to be covered. +The Kasendorf market is obliged, on the basis of a legal basis, to operate the facilities in a cost-effective manner. +From 1 October 2016, citizens and industrial and industrial enterprises from Welshkahl, Neudorf, Reuth, Azendorf, Lopp, Lindenberg and Zultenberg will have to dig deeper into the purse. +Fee increases are between 48 and 67 percent. +As the managing director Herbert Schmidt pointed out to the panel, a new calculation of the charges for sewerage systems was necessary for the market community. +In the period from October 2016 to September 2020, overdrafts and undercoverings from the previous calculation period should also be compensated. +The serious increase in fees is based on the fact that all three waste water plants are relatively small installations with very low waste water, which is between 6800 and 12000 cubic metres per year. +For example, due to the low distribution base, for example, expenses for necessary repairs of several thousand euros would be seriously affected. +There is also a slight decline in the volume of waste water in all three plants. +Furthermore, in the last period of calculation, significant amounts of rehabilitation and repair expenses have been incurred in all three plants, not least because of their age. +The plant in Azendorf is nearly 30 years old, the plants for Welschenkahl, Neudorf and Reuth, as well as Zultenberg, Lindenberg and Lopp almost 20 years. +Schmidt pointed out that in the Azendorf sewage plant, the mechanical ventilation system had to be replaced because of a damage. +In the pumping plant of Welschenkahl, the nearly 20 year old conveyor systems had to be overtaken from scratch and, after almost 20 years of operation, the first sewage pond had to be used, the sewage sludge had to be disposed of and an additional ventilation facility had to be built in order to be able to comply with the water legislation in the future. +Schmidt: "to these extraordinary expenses came the updated maintenance and maintenance costs, which must be taken into account in the new calculation period." +The same is true of electricity costs, which were well below the current level in the previous calculation in 2011/2012. +Stone houses made it clear that in the case of low waste water in the three plants, the cost of operation and maintenance was "fully beaten". +In addition, Schmidt, the market community of large entertainment costs in the waste water plants, has been spared over the past 20 years. +In the view of stone houses, the situation for these installations will remain precarious in the long term, especially as the supply area of the Friesenbachtal wastewater network in Friesenbachtal cannot be extended because of the lack of facilities. +Bulgaria booked for first time in 8 months of inflation +National statistics show that inflation in Bulgaria in July was 1% on a monthly basis. +This is the highest value (since June 2012) and the first above zero since October last year, when positive 0.2% was recorded. +The annual average inflation of the last 12 months (August 2015 - July 2016) compared to the previous 12 months (August 2014 - July 2015) was measured by the CPI -0.8%. +The consumer price index in July 2016 compared to June 2016 was 101.0%, i.e. monthly inflation was 1.0%. +Inflation since the beginning of the year (July 2016 compared to December 2015) was -0.2% and annual inflation in July 2016 compared to July 2015 was -0.2%. +In July 2016, compared to the previous month, a rise in the price of the following categories of consumer goods was observed: food and non-alcoholic beverages (1.7%); transport (1.8%); leisure and culture (6.3%); restaurants and hotels (1.2%); various goods and services (0.3%). +Prices fell in clothing and shoes (2.2%); furniture, household appliances and routine maintenance (0.5%); health (0.1%). +Prices remained as in the previous month for alcoholic drinks and tobacco; housing, water, electricity, gas and other fuels; communication; and education unchanged. +Snapchat ' Anime ' effect as Asian cartoon criticised +Snapchat says this filter is anime-inspired, but some observers say it is insensitive to races. +With its filter tool, Snapchat allows around 150 million daily users to change reality and play with identities in such a way that already borders on the absurd. +You can turn into a pineapple, a dog or a figure that could be out of a Roy Lichtenstein painting. +The filters are blunt, self-twisting tools that generate more than 30 million improved selfies per day. +All mistakes are made to the public. +Snapchat filters have drawn criticism in the past, accusing them that the app would promote Blackface or promote white skin as a beauty deal. +When it suggested to some users this week a filter that gave them sledgehammers, false teeth and inflated cheeks, some critics called it a racist caricature of Asians - "yellowish." +They wondered whether these repeated controversies pointed to a bigger problem that the company has with diversity. +The news and outrage were widespread on Wednesday, with reports from The Verge and Motherboard, a day after Snapchat told reporters that it had deactivated the feature. +The company offered an apology: the filter was intended as a tribute to anime characters rather than a caricature of Asians. +But outsiders who have experienced racism reminded the filter of offending cliches. +Others strongly rejected the anime comparison. +In an e-mail, Grace Sparapani, a Korean-American art student whose tweet was widely circulated about the photos, said the filter was "vulnerable and to say the least unpleasant." +She added that " it is difficult to argue with the backlash of a very restive Asian cartoon and the filter effects. +It shows that the filter is not yellow, but that the yellow face has been drawn to the abysmal extreme. +Snapchat is not the only company to cross this cultural stumbling wire. +American culture seems to be involved in an endless diversity and integration struggle, from conference rooms to Hollywood and the devices we all hold in our hands. +And Snapchat's large audience of young people - who are more diverse in terms of race than their older counterparts - might be more likely to expect sensitivity. +When one of Snapchat's filters generates an image that is offensive to a user,"so it is much more difficult for such things to go unnoticed than it used to be," said 25-year-old Katie Zhu in an interview Thursday. +On Thursday, Zhu, who works as a product manager and engineer for Medium, decided to delete her Snapchat account urged others to do the same. +In an essay for Medium and in a telephone interview, she said she believes that race-related controversies reflect a lack of diversity in the recruitment practices at Snapchat. +Zhu criticized the largely white, only male leadership and ended her essay with a hashtag: _SHARP_ DeleteSnapchat. +"Either they have no different representation of people with other skin colors in their workforce so they can make such decisions," said the Chinese-American Zhu,"or they have people with other skin colors who work there but are not in positions where they feel safe or comfortable to say what is against." +Others share her opinion, a complaint that Snapchat has left largely unanswered. +The company does not publish figures on the diversity of its workforce and points to its status as a private company. +On Thursday, Snapchat declined to discuss the cultural backgrounds of his staff, but, according to a spokesman, the company recently hired a personnel manager focused on under-represented population groups and on internal integration efforts. +For her part, Zhu said she will leave her Snapchat account closed and added,"I wonder if they need more users like us to say that is not O.K." +Military leadership falsifies ISIS intelligence information, puts Committee of Congress firmly +Military personnel from the United States Central Command changed intelligence to draw a more optimistic picture of the war against the so-called Islamic State in Iraq and Syria than it would have allowed actual conditions on the ground, a congressional investigator said in a report Thursday. +The preliminary report, prepared by a task force of Republican members of the congressional committee, intelligence committees and the Wehrbudget budget committee, reports great dissatisfaction among Central Command intelligence analysts who reported how presenters changed their assessments of U.S. efforts in the fight against the Islamic State. +The Central Command, briefly Cencom, is the military headquarters in Tampa, Florida, which controls U.S. military operations in the Middle East and Central Asia. +"Intelligence information, typically sent by senior Centcom commanders, regularly marked a more positive picture of America's efforts against terrorism than it would have allowed actual conditions on the ground and were consistently more positive than analyses of other intelligence services," a newspaper article quoted the report as saying. +"What happened at Centcom is unacceptable - our soldiers suffer when bad analyses are presented to our leaders," said Ken Calvert, Republican member of the House of Representatives. +The leadership failures at Centcom extend to the top of the organization. +The 10-page report shows detailed persistent problems in 2014 and 2015 in the descriptions and analyses of American efforts in training Iraqi forces. +Although it does not provide direct evidence that government leaders have given instructions under Obama to change the reports, it shows how analysts faced pressure from their superiors to draw a more optimistic picture of the Islamic State's threat, also known as ISIS or ISIL. +"During the first half of 2015, many Central Command press releases, opinions and statements before Congress were far more positive than the facts," the report noted. +For example, a Centcom member publicly announced that a military reconquest of Mossuls could begin as early as April or May 2015. +Mosul, Iraq's second largest city, remains under the control of the Islamic State. +"After months of investigation, so much is clear," said Mike Pompeo, Republican congressman from Kansas, in an opinion. +From the middle of 2014 to the middle of 2015, the Central Command's spikes changed the intelligence reports to downplay the danger posed by ISIS in Iraq. +Republicans launched the task force after they conceded that analysts were worried about manipulation of reports to the Islamic State. +The report released Thursday will be supplemented by more detailed findings while the investigation continues. +In addition, further investigation of the Centcom reports is under way by the General Inspector General of the Ministry of Defence. +Democratic members of the News Service Committee released their own findings on Thursday, agreeing with some of the conclusions of the Republican task force. +"In 2014 and 2015, the Centcom created an overly limited process for creating intelligence assessments to ISIL and the Iraqi security services," the highest-ranking Democrat in the committee, a member of the House of Representatives Adam B. Schiff, disclosed in an opinion. +That process, according to Mr. Schiff,"delayed the release of intelligence reports," damaging the morale among analysts and "gave overly little room for dissent." +But Mr. Schiff and the Democrats vowed not to have any indication of White House intervention at the Centcom analysts in terms of a "certain political opinion." +The preliminary results of the congressional investigation were published Tuesday by "The Daily Beast." +Last August, the New York Times reported an investigation by the Pentagon's general inspector general, which was taken after complaints from Centcom analysts. +LT. Cmdr. Patrick Evans, a Pentagon press officer, said in an opinion that the Defense Department would not comment on any reports by Congress, while the general inspector general's investigation was still under way. +But he also admitted that "experts sometimes have quite divergent opinions on the interpretation of complex data, and that the intelligence services and the Department of Defense welcome a controversial discussion of these important issues of national defense." +The investigation has repercussions beyond the question of a successful air campaign under American leadership in Iraq and Syria (an assertion now made by a growing number of Defense Department members). +Last year's accusations, however, raised the question of how President Obama can rely on the Central Command for honest assessments of military operations in Iraq, Afghanistan, Libya and other crisis regions. +Critique about intelligence about Islamic State reminiscences about the Islamic State more than a decade ago, when a Centcom analyst, Gregory Hooker, wrote a document about how, contrary to the recommendations of many analysts, George W. Bush envisioned only a small occupying force in Iraq, and had little time to worry about the consequences of the 2003 invasion. +Mr. Hooker also played a key role in the uprising against the current coverage of the Islamic State. +Last year, the team around Mr. Hooker noted, according to government sources, that contrary to the government's statements, airstrikes against the refineries held by the Islamic State would have no significant effect on the terrorist group's financial position, since those temporary refineries would have been put into operation to sell oil on the black market. +That finding, however, has not been released, the Times reported in September. +Centcoms's then-commander, Gen. Lloyd J. Austin III, has been criticized by members of the legislature for his overly positive assessment of the war situation at a hearing before the Senate. +General Austin retired in April and was replaced at the Central Command by Gen. Joseph L. Votel. +U.S. win fourth match in women's field hockey, showdown with Britain +A day after she scored three goals during a 6-1 victory over Japan, Katie Bam also made the first two goals for the women's American field hockey team in a match Thursday against India that the Americans won by 3-0. +Five goals in two games should actually be a memorable achievement, but Bam (27) said she could not remember having ever done that. +"I have no idea." she said. +I do not belong to the people who keep their doors in mind. +However, she knows that: the Americans are at 4-0 in the Olympic competition and are equal in their group with the Britons in the first place, who remain unbeaten after their 2-0 victory against Japan. +Britain and the United States will meet Saturday in the last game of the first round. +Both teams have already qualified for the quarter-finals, the game will decide which of the two within their group from six teams will each gain the first and second place. +The first place will go a little longer for the strong Dutch, who will lead the other group. +Whatever the game on Saturday, the American women have sparked a surprising upset by their success story, four years after they landed at the last of 12 places at the past London Games. +BAM was part of this team. +She grew up in Blue Bell, Pennsylvania, and had the first time with three years a hockey sleeper in hands (her two older sisters played the sport at Drexel University), with 16 years she became national playwright, the youngest in the team's history. +She missed the Olympics in 2008 as she failed to qualify for the caddie. +Then came 2012, in which for her and her team everything went wrong. +The following year, Craig Parnham, an Englishman, coach of the national team, began to turn things around for the better. +"A culture change, a mental change and a physical change," Bam said. +We did not have the workload in London that we have now. +We have been able to take the helm completely. +On Thursday night, Bam opened the torch in the first half of the game with a rebound from close range. +India had gone into the game without a win in the tournament, but the team proved surprisingly tough and kept the score from 1-0 down into the third quarter until Bam took the game into their hands. +She completed a sprint with the flat ball over the left flank, then moved to the middle and lubricated the ball into the gate to give the Americans a 2-0 lead. +Melissa Gonzalez made the final goal in the middle of the final quarter. +The shutout was the first of the entire tournament for the US goalkeeper, Jackie Briggs, who has so far had to concede a gate in each of the previous games. +She has a run. +Same as Bam. +"We are in a good position," said Parnham, but how well will depend on the outcome of the next game on Saturday. +Amid the Rage of the Olympic Games, the Zen des Trampolins +Wherever you are, how late it is, it is the Olympics. +The events in Rio de Janeiro feel constant and inescapable, a racing staple between competition and aspiration. +It is as if the Olympic torch itself is a burning stomach, stretched from the armor to the swimmer to the turner to the triathlete. +You cannot turn on the TV, read a newspaper or listen to your neighbour's conversation in the coffee shop without hearing about Simone Biles, Katie Ledecky or the quarrel between Michael Phelps and Chad le Clos. +And then there is Logan Dooley. +Dooley, who is here for the first time at the Olympics and a women's black with greats, could well have been among those familiar names sent to Prime Time, built by sponsors and feel-good TV advertising if he were a swimmer, Turner or even Fechter. +But Dooley, 28, from Lake Forest, California, is battling gold in the Olympic trampoline. +The Olympic flame does not illuminate each event the same. +Further from the center, partly in the shade are the sports that are not universally recognised: air pistols shooting, archery, badminton, Taekwondo. +We will always have the breast swim and may it be long. +But if I can make modest arguments for my particular darling, let me draw attention to the discreet charm of the trampoline. +Although trampoline jumping has been an Olympic event since 2000, when it had its debut in Sydney, it was perceived the last 16 years so sparingly that many of the ones I had interviewed did not know it is an Olympian type at all. +That could also be regional ignorance. +Although the U.S. sent athletes to the competition, it has never won a medal in the trampoline jump and until 2012 had an athlete who made it to the final round. +The Chinese and Russians tend to share the prices of the men and the Chinese and the Canadians for the women. +DONG Dong of China and Rosie MacLennan of Canada will defend their gold medal from London this year. +The trampoline jump has a certain outsider charm, in part because for the unenlightened ear it sounds more appropriate for a clowning school than that for the Olympic Games. +At this point, I should admit that I am not an expert, but only a naturalized enthusiast. +It has humoristic potential - the cartoonish citation of his never-ending impact - but also the grace of the tournament and diving, the two sports that essentially unites it. +The word "trampoline" comes from the Spanish El trampoline, which means as much as "springboard." +Aspiring victors jump on a giant trampoline, shoot nearly up to 30 feet into the air and have to make a series of falling movements (turning, hitting and saltos) before they land on their feet. +They are evaluated according to the official Olympic program after execution, difficulty and "flight time". +Second-round athletes from 17 countries, 16 men and 16 women, will compete in Rio. +The most common Olympic vector is straight ahead. +Medal hopefuls have to go further in their pursuit of gold, faster, up and down, sometimes to the goal, sometimes back and forth, up and down the pitch. +They hunt not only the finish line or the starting wall, but also, in television broadcasting, another cavalier goal: that of the world or the Olympiarecord. +The purposeful pursuit is nobel, admirable, even fanatical - and it is enough to stir even a spectator to tears. +But it is also what I find to be a bit tiring even when watching these games. +Of this, the trampoline offers a breathing space. +The vector of the trampoline jumper is up. +A forward movement is not the goal. +He or she jumps off, seemingly heavy-handed like an astronaut, goes up, then down, then effortlessly up again. +Again there is a competition, of course not without difficulty, but during the exercise there is no hectic attack on the goal, no wolves in the distance, just the dreamy, elegant lifting of time and gravity. +It is as Zen as the competition at the Olympics can only be. +The women's qualification and final rounds will be held Friday afternoon, in streaming at 13.00 Eastern Time; that of the men on Saturday, also at 13.00. +NBC will broadcast the Endrunden as part of an afternoon block on both days from 14.00. +In the midst of the Olympic mania, they promise a quiet, nice moment, one that is likely to be overlooked in the general tumult. +If consciousness can be achieved only by the angling and objectification of male athletes - as the male US Turner suggested recently, according to The Wall Street Journal - Mr Dooley awaits his fledgling, new fan base. +"A generation protested" in Ethiopia, Long a US ally +Violent protests in Ethiopia +Protesters demanding political changes in Ethiopia met with violent resistance from the government. +Witnesses say that tens of protesters were killed in shootings during clashes with police. +Is Ethiopia in the process of collapsing? +Over the last decade, it has been one of Africa's most stable countries, a solid ally of the West with a fast-growing economy. +But in recent months, anti-government protests shook the country and expanded into more and more areas. +Last week, thousands of people stormed the streets and demanded fundamental political changes. +The government's response was ruthless, according to human rights organizations. +Witnesses said police shot and killed scores of unarmed protesters. +Videos in circulation about the protests, presumably from the last or earlier this year, show how security people beat young people with sticks, while they were forced to make a hand stand against a wall. +The head of the UN Human Rights Agency is now asking for an in-depth investigation. +"It has always been difficult to keep this country together and in the future it will become even more difficult," said Rashid Abdi, the project manager of the Horn of Africa International Crisis Group, a research group. +Ethiopia is the most populous country in Africa and its stability is appreciated by the West. +American military and intelligence agencies are working closely with the Ethiopians to fight terrorist threats beyond the region, particularly in Somalia. +Ethiopia's economy expanded at a considerable pace. +Its infrastructure has improved dramatically - there is a new commuter train in the capital Addis Ababa. +The streets are usually quiet, safe and clean. +Although Ethiopia has been far from a model for democracy, human rights organisations have consistently led the government's repression - the opposition in the country has been restricted, with dissidents effectively silenced. +Many were sent into exile or in jail, killed or driven into the expanses of the desert. +But that could change. +"If you suppress people and these no other options have other options besides protesting, it breaks out," said Seyoum Teshome, a lecturer in central Ethiopia. +The whole youth protests. +A generation is protesting. +There are numerous complaints that cover everything from land use to the stranglehold on power of the ruling coalition. +After a widely criticized election last year, the ruling party and its allies were given the last seat of the opposition and now control 100 percent of the parliament. +At the same time, tensions are rising along the border with Eritrea; a battle for this treacherous, controversial line claimed hundreds of lives in June. +Analysts worry that separatists such as the Oromo Liberation Front or the Ogaden National Liberation Front, which have been more or less defeated in recent years, could exploit the turmoil and rearm themselves. +Several factors explain why feelings of bitterness now explode beneath the surface after years of gestation. +The first seems innocuous: smartphones. +It is only in recent years that many Ethiopians have been able to communicate via social media, as cheaper smartphones have become increasingly common and Internet services improved. +Even if the government blocks access to Facebook and Twitter, what it does at regular intervals, especially in protests, many people can still communicate via Internet proxies that hide where they are staying. +Several young Ethiopians said they gathered to protest. +The second factor is that there is more solidarity between the Oromos and Amharas, the two largest ethnicities in Ethiopia. +The Oromos and Amharas are not natural enemies. +Since eons, the Amharas, who come from the predominantly Christian highlands, have prospered in politics and economics while exploiting the Oromos, many of whom are Muslims and live in lowland areas. +But even that is changing. +"We are in the process of coordinating under an umbrella," said Mulatu Gemechu, a leader of Oromos. +The biggest protests took place in areas of the Amhara and Oromos. +Many Amharas and Oromos have the feeling that Ethiopia is unfairly dominated by members of the Tigray ethnic group, who make up about 6 percent of the population and are dominant in the military, the intelligence services, trade and politics. +The third reason for the riots is the death of Meles Zenawi. +Mr Meles, a former rebel leader, was Ethiopia's prime minister until his death on an undisclosed illness in 2012 for 17 years. +He was seen as a tactical genius, a man who could think around corners. +Analysts say he was particularly savvy at seeing early signs of discontent and using special representatives to edit opponents and make them harmless. +"The current regime lacks this fundamental skill," said Mr Abdi, a conflict analyst. +Ethiopia's new prime minister, Hailemariam Desalegn, was selected for relatively obscure reasons to take Mr Meles's position. +Unlike Mr Meles, who came from the Tigray region of northern Ethiopia, Mr Hailemariam comes from the south. +Analysts say he does not have the confidence of the security services controlled by the Tigray. +Many worry that the result will be more bloodshed. +The last time Ethiopia experienced such a revolt was in 2005, after thousands protested against elections, which, according to analysts, appears to have been sworn in by the government and then stolen. +During the ensuing raids, many protesters were killed, even if they were less than in recent months, and this time of unrest passed relatively quickly. +Development experts praised Ethiopia's leaders for their visionary infrastructure planning, such as the new commuter train, as well as for their measurable progress in the fight against poverty. +But obviously this has not prevented the intensification of the internal disgust of the Ethiopian government. +And it is taking a dangerous ethnic form. +Last month, protesters in Gondar, an amharic city run by Tigray conducted deals and the hatred toward the Tigray is becoming more common on social media. +Analysts say the protests put the U.S. and other Western allies in a strange position. +The American government used Ethiopia as a base for drone flights over neighboring Somalia, even though it recently announced it had closed that base. +While the West clearly wants to support democracy, it does not want its ally to collapse in an already volatile area. +"This," said Mr Abdi,"is a very thin gratuity." +Donald Trump explains his claim Obama had founded ISIS was "sarcasm" +Donald J. Trump tried on Friday to dispel the latest controversy surrounding his campaign, saying that his oft-repeated claim that President Obama and Hillary Clinton had been the "founders" of the terrorist group Islamic State was not serious. +That clarification raised new questions about the communications skills of the Republican presidential nominee, whether he was able to communicate clearly and intelligently with the American public. +It also brings his comrades, who seek to protect him during an eventful phase, into the peculiar position of having to explain statements he might not have meant at all. +After making the suggestion at a campaign event Wednesday night, Mr. Trump rested on the claim Thursday and insisted in interviews that he really did not intend to indicate that the president and Mrs. Clinton had created ISIS. +But in an early morning tweet on Friday, Mr. Trump said he was simply being sarcastic. +The tweet was the contrast to the previous day, when Mr. Trump said in a series of interviews he meant the accusation was entirely serious. +When conservative radio writer Hugh Hewitt sought to help Mr. Trump to soften the statement somewhat by reminding him that Mr. Obama wants to destroy ISIS, the Republican presidential nominee did not want to know anything about it. +The last storm of criticism cracked down on Mr. Trump, while trying to steer the focus of his campaign because of falling poll numbers on the economic situation. +Mr. Trump and Mrs. Clinton held speeches on the economic situation in Michigan this week. +On Friday, Mr. Trump tried to return to this issue again. +Speaking on Twitter, he warned that Mrs. Clinton's proposals would lead to higher taxes and that he found her speech boring. +Mr. Trump has already raised sarcasm to his defense. +At the end of July, he drew strong criticism when he suggested that the Russians should hack Mrs. Clinton's emails, but he later declared,"Of course, I meant the sarcastic." +This method allows Mr. Trump to shift the linguistic boundaries in politics and then back down as needed. +"I think it is one of his methods to test how certain messages are received by his fans, how they arrive, and then, if necessary," clarify "depending on how the reaction is out," said Ruth Sherman, a communications expert who monitors the language of both candidates. +But I also think he is clever enough to keep his statements vague enough so that they can be interpreted in various ways. +Instead of defying the tone for the presidential election, Mr. Trump has adopted an even more corrosive tone, as his poll ratings have continued to decline. +A new poll by NBC/Wall Street Journal/Marist, released Friday, showed a lead with a big lead in the states of North Carolina, Virginia, Colorado and a head-to-head race in Florida. +While Mr. Trump is generally trying not to apologize for his provocative remarks, he frequently accuses his critics of distorting his statements or misinterpreting his humor. +But, while he has been the focus of attention in the last months of his presidential campaign, Mr. Trump's joke has put his loyal fellow Democrats in the uncomfortable position of having to stand up to him, no matter how provocative his statements may be. +Rudolph W. Giuliani, former mayor of New York and one of Trump's most prominent advocacy groups, made great efforts to defend the candidate today in a CNN interview from Thursday. +"I think what he is saying are legitimate, political comments," said Mr. Giuliani, adding he was questioned about the accuracy of Mr. Trump's statements on whether Mr. Obama and Mrs. Clinton had founded the Islamic State. +It is true in this sense that before Obama was an almost unknown, small organization, he called them backbenchers, completely wrong, and that is why it happened because he pulled the troops out of Iraq. +Most mainstream Republicans are trying to argue that under Obama, in which Mrs. Clinton served as Secretary of State, it allowed ISIS to spread out by failing to aggressively control the situation in the Middle East. +Before the campaign events in Pennsylvania on Friday, Mr. Trump continued his attacks on the media and accused them of spying on each of his words and being biased against him. +He scorned the "poor, jolly" TV experts who try to understand him and said,"you can 't!" +Some of the Democrats scoffed at Mr. Trump's apology as just one more proof that he was unfit for the presidency. +Once squeezed over price from the market, Café comes back in Greenpoint +Verb Cafe was a shabby cafe in Williamsburg, where you could only pay cash that had no Wi-Fi but served good coffee for 15 years. +Of course, prices have been squeezed out of his Bedford Avenue store front. +The store soap Cherie, which replaced verb in the summer of 2014, sells soap in the form of cupcakes. +Locals cheered it as the last loss in a gentrified city. +The artist Molly Crabapple wrote on Twitter,"I know New York is changing, but I still cannot believe that CBGB dead, the Chelsea Hotel excepted and Verb is now a soap business." +But if New York is changing, it is also reinvention. +A revived Verb Cafe opened in Greenpoint last November, less than a mile north of its original location. +The new verb has Wi-Fi and accepts credit cards, but still has some of the same employees and a similarly simple atmosphere. +The coffee is still good, too. +The new owner of the verb is Cisco Rodriguez, a longtime employee of the old cafe who is the owner and managing director of the new cafe. +He started working at Verb in 2001 and stayed there until the end. +When he offered a client to provide funds for a new outsider, he was excited to do it, he said. +Rodriguez, 36, blasted a lot. +Verb used the same distributor for the bagels bought the same espresso machine model. +It even uses the same lamps from the old verb. +But Rodriguez said he also wanted to experiment. +He introduced new ingredients. +On the menu are sandwiches with bacon and cheese and there are garnishes such as capers and sauced onions. +There are natural bowls. +The cafe no longer serves beer, there are fresh juices for it. +After nine months, Rodriguez said he noticed a steady stream of old regular customers. +"Many old customers have also been displaced by prices from Williamsburg," he said. +Recently, on a Sunday, Rebecca Oliveira was such a customer. +OLIVEIRA, 34, previously lived in Williamsburg and visited the verb on a regular basis. +Even after she moved to Greenpoint, she would take the road. +After the verb closed, she gave up the coffee rink for a while, she said. +"I became clear that it was in the coffee and the culture in the verb that I liked," she said. +Now she is drinking coffee again, even if she ordered a blended Chai Tea instead of her usual iced coffee, which is another new addition. +Tom Rosenthal is another longtime and loyal customer since the beginning of the verb in 2003. +He went there before the work and invariably ordered the same. +"I came quarters after seven, every day, like a Swiss pocket watch and they are preparing my Everything bagel with butter," he said. +Photo Rodriguez said he wanted to experiment and add new ingredients to the menu. +Nowadays, Rosenthal still gets his usual order, but sometimes he switches his Everything bagel with bacon, egg and cheese. +Rodriguez said he had no grudge about the soap business taking the old business room. +In fact, the owners of the soap Cherie offered to produce a special soap for verb with the cafe's cold-blooded coffee as an ingredient. +"I think we are still going to go down on their offer," said Rodriguez. +And the traditional Polish inhabitants of Greenpoints have also accepted the cafe. +A new customer has translated the menu into Polish and Rodriguez said he plans to issue it soon, so that his new neighbors feel welcome. +The location also has other advantages. +A local juice local wants to fill and sell the cold coffee. +There is a chance that the cafe will expand to a nearby building. +For many customers, a new verb is enough to get their old favorites. +Joseph Witt was a regular customer and said he was destroyed on the ground when the cafe closed. +When the new cafe opened, Whitt said that entering the premises and ordering a new coffee was felt like a return home. +"I had to smell that," he said. +The depressing food of the economic crisis in "a rich meal" +In March 1933, shortly after his ascension to the president, Franklin Delano Roosevelt took his lunch in the Oval Office. +As a gourmet, President Roosevelt had a faible for refined delicacies of Fifth Avenue like pâte de foie gras and Maryland water-turtle soup. +His menu on that day was slightly more modest: stuffed eggs in tomato sauce, potato pepper and as dessert a plum pudding. +"It was an act of culinary solidarity with suffering people," said Jane Ziegelman. +Her husband Andrew CoE added,"it was also a message to the Americans how they should eat." +The couple lives in Brooklyn Heights and are both food historians. +CoE's latest book,"chop Suey," was about Chinese cuisine in the US, while Ziegelman was told about life in a home on the Lower East Side from the food perspective in her book "97 Orchard." +Her latest collaboration,"a decent meal," which will appear in the Harper Verlag on Tuesday, illustrates the history of American cuisine during the Great Depression. +They showed culinary solidarity when they met with a reporter at Eisenberg's Sandwich Shop for dinner, a small snack snack in the Flatiron District, which has been in store since the 1929 stock market crash. +Ziegelman, 54, ordered a fresh cheese sandwich with olive groves, while CoE, 57, made turkeys with potato pepper and vegetable mixture. +When the reporter ordered Hackbraten, this found the pair fit for a discussion about food in the era of the Great Depression. +"Rich foods were very popular," Ziegelman said. +There was peanut broth, liver cheese and bean bread. +They were made from an ingredient and something cheap that stretches the ingredient. +Imagine eating so many peanuts that they serve them as dinners. +Coe grinned. +"It must have been in the stomach like lead," he said. +In the years before the Great Depression, the table was in an American household, especially in rural areas, an All-You-Can-Eat-Buffet. +Teams of women cooked for male field workers and it was served freshly baked pastures for breakfast, lunch and dinner. +It was the Americans who sent food to starving Europeans during the First World War. +"It was a time when food for the Americans became a central, tense issue," CoE begged, why he and his wife wanted to write about it. +Equally tense was the new budget diet: mysterious dishes such as broth and casserolls became staple foods, the casserole as "wonderful way to recycle food," noted Ziegelman, as cooks could hide unappetizing ingredients under a creamy sauce. +Fresh fruit has been replaced by cheaper dry fruit. +Meat, which has been the center of American cuisine for years, became a rarely served luxury. +Strange mixtures were tried, as a calorie rich and nutritious satisfaction took precedence over taste or even healthy cuisine. +During her research for the book, which also includes recipes, Ziegelman prepared a dish from that era, baked onions with peanut butter. +"It was not a popular addition at lunch," says Coe. +Ziegelmann continues: "it was surreal." +Peanut butter and baked onions do not match each other. +It was typical for many of the house economic recipes. +As never before, or ever since, budget economists - including Louise Stanley, head of the Federal Bureau of Home Economics from 1923 to 1943 - were so keen on the country's eating habits. +By publishing recipes and articles in newspapers and magazines, they encouraged women to become "budget politicians" and meet the challenge of turning Pampe like creamy spaghetti with carrots into delicious meals. +"A Square Meal" is a celebration of historical delicacies. +Especially tasty are the reports of the government's response to the starving citizens, such as President Herbert Hoover's Lass-mich-cake-eating attitude. +While he publicly praised the simple Iowa farmhouse kitchen of his kitchen, he dined like the million-strong man of world to which he has become. +"He liked continental cuisine like fish with Gurkensauce," said Coe. +He ate in an almost gold-plated dining room and wore a Smoking. +He was wonderfully unrealistic. +President Roosevelt might have made the same mistake if not his wife Eleanor had asked him to set an example with his stomach. +As described in the book, the hiring of a housekeeper with no interest in flavors by Ms. Roosevelt meant that the White House produced the most boring food in Washington, but also one of the most dismal. " +Many of the species from the Great Depression era to deal with food was discarded as soon as the country got back on its feet. +The legacy is based on our continuing focus on calories and food, said Ziegelman, as well as how science was applied to food. +The couple gave a better understanding of the eating habits of Ziegelman's mother-in-law when writing the book - for example, how they could not throw away food. +"She had a real fear of wasting food," said CoE. +Ziegelman recalled,"she made people really sick." +There was the windbag incident. +After the plates were cleared at Eisenberg, they and CoE drew a dessert that they had prepared at home: the plum dessert that President Roosevelt ate at lunchtime. +"It is called prune whip," said Ziegelman and added that it was a usual trick to miss modest recipes a send name. +There were no battered cream, just plums, some flour, sugar, water and cinnamon. +Each appeared somewhat reluctant to have a spoon in the tough, brown glibber. +Amazingly, it was not bad. +CoE picked up an aftershock three times. +Like a Can-Do buddy, he said to his wife,"A couple of chopped walnuts would help." +Killed in bomb attack: he was the hero of Aleppo +He put his own life at risk to help others: Khaled Omar. +He was the hero of Aleppo: Khaled Omar dedicated his life to the people of Syria. +He risked everything to save others ' lives. +Now the 30-year-old himself has died in a Fassbomb attack by the Assad regime. +Omar was a member of the White Helmets, a civil protection group that, according to the Bild newspaper, has saved nearly 60 000 lives so far. +2900 volunteers put their own lives at risk to pull people out of bombed homes and to provide first aid in the war zone. +They are the heroes of the war in Syria. +Omar was the face of the group: a video of the Civil Guard showing him in an 11-hour rescue of a baby from the rubble of a house went around the world in 2014. +It made the Syrians a shining symbol in the horror of war. +As a hero, however, he never saw himself, saying, according to the picture,"for me, that is the real jihad." +"If I am dying to save lives, I think God sees in me a martyr." +Shortly before Omar himself fell victim to an attack, he had spoken in a video about the latest bombing in Syria. +Helicopters dropped four barrel bombs over the Alzadia district, one was filled with chlorine gas. +A woman and two children died, seven people were suffering from breathing. +"We are now eliminating the poisonous remains of the bomb, lest children play with it," the Bild quoted his last words before he died. +The Assad regime's deadly bomb was supposed to hit terrorists. +Greenland shark: the oldest vertebrate is nearly 400 years old +Rare sight. +Greenland sharks usually only come to the surface in winter. +This shark was allowed back into the sea after an investigation on board the research vessel Sanna. +He was born in 1624 and swims with well a 1 km/h through the North Atlantic - to this day. +Greenland sharks only get young people with 150 years of age. +The Greenland shark boils down at the bottom of the North Atlantic, and in an hour, on average, it is just 1,220 metres far. +Only when it arrives, the five-metre long animal speeds up to a saturated 2.6 km/h - and is half as fast with this maximum speed as a seal. +This lonely lifestyle, however, seems to be a patent recipe for a high age. +Julius Nielsen of the University of Copenhagen and his colleagues report in the journal "science", in any case, from a Greenland shark that could be 392 years old. +"Madness," said Alexander Scheuerlein of the Max Planck Institute of demographic research in Rostock, this life span, which means a world record for vertebrates. +Of course, the evolutionary biologist has long suspected that Greenland sharks will be staged. +Just lacked the evidence. +Greenland sharks are hard to observe, after all they live in the ice sea in front of the sparsely populated coasts of Canada, Greenland, Norway and Spitsbergen. +Because they prefer water temperatures around the six degrees Celsius, they tend to dip on the surface only in winter. +Researchers know little about the lifestyle of the Greenland sharks. +They were at a time when they had six animals with a transmitter in front of Spitsbergen. +Looters do this sharks anyway: in the stomach of an animal, researchers found the remains of a seal, another had swallowed the jaw of a young polar bear. +They may hunt down sleeping animals or patrol at the bottom of the ice sea and look for carcasses that tore down from higher water layers. +Julius Nielsen and his colleagues now studied 28 Greenland sharks, which caught fishermen between 2010 and 2013 before Greenland or Spitsbergen as a by-catch from the depths of the North Atlantic. +The smallest shark was just 81 centimeters long, while the largest 502 centimeter measured. +To determine the age of the animals, they analyzed the lineage of the sharks using the carbon 14 method. +This center of the eye lens is created even before the birth of the sharks, the proteins contained in it are not renewed later. +The two smallest sharks had striking a lot of carbon-14 in the linescore. +Their birth should therefore be after the early 1960 ' s, when nuclear weapons tests brought greater quantities of this radioactive carbon into the atmosphere. +On the other hand, in the 220 centimetres of the third smallest animal, the nucleus contained a small surplus of carbon 14 from the nuclear weapons tests, so it should have celebrated its 50th birthday during its investigation in 2012. +In contrast, all the larger Greenland sharks had normal carbon-14 volumes in their lineage, resulting from cosmic radiation in the atmosphere. +In fact, the carbon 14-watch for a 493 centimeter long Greenland shark showed an age of 335, while the record shark with 502 centimeters is likely to be 392 years old. +The fact that Greenland females only get young people when they are longer than four metres was well known. +Now the researchers of the length have been able to assign an age. +Since one of the animals with 392 centimetres was probably on the brink of sexual maturity and their age was determined at 156 years of age, Greenland sharks are apparently allowed at least one and a half centuries. +This, too, is likely to be the world record for vertebrates. +It is no coincidence that such methusaleme is mainly living in icy waters. +Also, the previous record holder, a 211-year-old Greenland whale, in whose bacon at the neck was a 120-year-old harpoon tip, was caught before Alaska. +The low temperatures often include the organism of the animals living there. +So they mature later - and aging more slowly. +In order to keep warm in cold water, the animals are often particularly large. +Because the volume grows much faster than its surface, through which the animal loses heat. +The heat loss of a gram mouse is therefore much greater than with a gram of elephant. +Another advantage: they have fewer enemies. +"So a smaller animal lives more dangerous and should concentrate on having as many offspring as possible as early as possible," explains the evolutionary biologist Scheuerlein. +A very large animal, on the other hand, should invest its resources in a long life. +Building ground in double pack +With issues surrounding construction, the local council has focused on the most recent meeting. +With relief, the panel adopted Mayor Robert Putz's message that "at last the marketing of the recently designated residential area can begin." +After clearing the land, parking and development issues and making the applications for surveying, the sale of the plots of land in the residential areas "Road" and "Schönau-West" (Binderstraße - Explanation section 1) is no longer in the process of being sold. +The local council is convinced that the buildings in the rural and quiet residential community of Schönau address young families and mature seniors alike. +As it was said, developers can now sign up at City Hall, the awarding of the parcels is expected to be discussed by the local council at its September meeting. +In order to be able to respond to requests for the settlement of further businesses, linked to the creation of jobs, the Municipal Council decided to amend the land use plan, which was first created in spring this year. +In the area of Untertimlarn, the industrial area already designated there will be extended by two parcels in the direction of the state road 2112. +Frankfurt benefits from Brexit +So, in competition with Paris, Dublin, and Luxembourg, the city of Main has the best chance of attracting jobs and firms relocating from London. +"It is very likely that Frankfurt will benefit most from the Brexit vote," says Michael Voigtländer, head of the IW's financial markets and real estate markets. +After the Brexit referendum, it is uncertain whether money houses can continue to run from London to financial transactions across the EU. +For the so-called EU passport, they have been granted authorisation in the United Kingdom. +That is what large US banks are using. +Several banks have already announced to relocate jobs. +The lobbying association "Frankfurt Main Finance" anticipates 10000 new jobs in the Main within five years. +For Frankfurt, IW, the headquarters of the European Central Bank (ECB), which combines responsibility for monetary policy and supervision of the eurozone's largest banks, as well as other key authorities such as the European insurance supervisor EIOPA and the ESRB risk council. +In Paris, the Organisation for Economic Cooperation and Development (OECD) has its headquarters, but it is less important for the financial industry than the ECB. +"Proximity to the central bank is important for banks as they can communicate directly with oversight," says IMF professor Voigtländer. +Luxembourg is a large fund industry, but, like Dublin, it is worse off in terms of infrastructure. +Frankfurt is much easier to reach thanks to the large airport. +Furthermore, the city with easily available commercial real estate. +"In Paris, it is not so easy to find free high-quality offices," says Voigtländer. +At the Seine, rents for first-class commercial real estate are 50 percent higher than in the Main. +In addition, Frankfurt offers a higher quality of life than competition, thanks to good medical care and infrastructure, as well as less crime. +In a ranking of business consultancy Mercer, the city stands at No. seven, Luxembourg at No. 19, Dublin at No. 33 and Paris in 37th place. +Even if quality of life is a question of preferences: "with its already strong position as a financial location for the European internal market, Frankfurt could attract more banks and investors," the IW concludes. +But, despite Brexit's vote, London will remain the most important financial center in Europe, economic researchers say. +This is also true of the balance of power: in London, according to the figures of Landesbank Helaba, around 144000 people worked in the banking industry at the end of 2015; in Frankfurt it was 62500. +Gilead receives legal costs from hepatitis C patent dispute with Merck +A US judge ruled that Gilead Sciences Inc is entitled to reimbursement of the legal costs it incurred from the Hepatits C litigation with pharmaceutical company Merck & Co Inc. +In June, Gilead was freed from a $200 million compensation payment for violating two patents of Merck and Harvoni of Gilead, after a U.S. judge discovered a pattern of misconduct by Mercks, including the Meineides and other unethical acts. +In elevating the lawsuit filed Thursday, U.S. District Judge Beth Labson Freeman said Gilead is entitled to enactment of the charges incurred during the defense of the case. +Merck is trying to catch up with Gilead, which dominates the market of a new generation of hepatitis C drugs that can cure more than 90 percent of patients with liver disease. +The case dates back to 2013, when Gilead and Merck complained to each other and took ownership of laboratory work involving Sofosbuvir, the active ingredient in Gilead's medications. +U.S.-backed troops say they have regained full control of Manbij from Islamic State +U.S.-backed troops have regained full control of the northern town of Manbij near the Turkish border after the last IS fighters in the city left them, a spokesman for the group said Friday. +The Democratic Forces of Syria (DKS) are now combing the city after the excerpt of the remaining group of fighters buried inside the city. +They freed more than 2,000 civilians held hostage by the fighters, Sharfan Darwish of the Manbij military council with the DKS told Reuters. +"The city is now under complete control, but we are currently conducting clean-up operations," he told Reuters. +Clintons earn 10.75 million in 2015 and pay 34.2% federal taxes +Hillary Clinton released her tax return for 2015 on Friday, delivering an income of $10.75 million and an effective federal tax rate of 34.2% for the Democrats ' presidential candidacy and her husband. +In 2015, the Clintons donated $1 million for charitable purposes, mainly to the Clinton Foundation; former President Bill Clinton earned nearly $5.3 million in Redehonorars; the former secretary of state gave an income of $3 million from publisher Simon & Schuster for her book about her tenure at the State Department. +Clinton's candidate for the vice presidency, Senator Tim Kaine of Virginia, along with his wife Anne Holton, published his tax returns of the past decade. +They paid an effective federal tax rate of 20.3% in 2015. +"Hillary Clinton and Tim Kaine continue to set standards in terms of financial transparency," gave Clinton's campaign hero Jennifer Palmieri in an opinion. +In a stark contrast, Donald Trump is hiding behind false excuses and backers on his previous promises to publish his tax returns. +It is common for US presidential candidates to publish their tax returns, even though they are not obliged to do so by law. +Trump, a New York businessman, and his lawyers have cited a tax audit by the tax authorities as a reason for his refusal. +"They are on the train," Clinton campaign aide Ian SAMS wrote on Twitter, referring to the release of the Democrats ' presidential candidacy. +On Thursday, Michael Cohen, Trump's special adviser, told CNN that he would not allow Trump to publish anything before the tax audits are not completed. +Trump's critics, including the 2012 Republican presidential nominee Mitt Romney, have already said that his refusal raises questions about wealth, his donations to charitable organizations, his business practices, and various other connections, especially with Russia. +Clinton has already cracked down on the issue and released a video on the Internet on Friday in which high-profile Republicans are urging Trump to release his tax return. +On Thursday, she also addressed the issue during a speech to the economy in Michigan. +"He refuses to do what every other presidential candidate has done in recent decades and publish his tax returns," she said to the crowd. +Politico has reported that Trump paid no or very little tax during the 1990s for two years, and a New York Times economics journalist quoted a number of tax lawyers and tax advisors on Friday, saying that could still be the case. +Federal taxes have become an issue in the election campaign. +Clinton supports a settlement named after the billionaire and investor Warren Buffett, who would ensure that people earning more than $1 million pay a tax cut of at least 30%. +President Obama also supports the proposal. +During a campaign event for Hillary Clinton last week in Omaha, Nebraska called for Buffett, whose Berkshire Hathaway industrial conglomerate has his seat here, to exchange Trump for a meeting on their tax returns. +Buffett said he was also subjected to a tax audit of the IRS and Trump was "afraid" of the voters, not the tax authorities. +Clinton's campaign has scaled back tax returns until 2007. +The Clintons, who now live in Chappaqua, New York, paid an effective federal tax rate of about 32% between 2007 and 2014 and an effective combined tax rate of about 40.5%. +Clinton's 2015 tax return showed that those only paid $100 of their income as a wage, unlike the bulk of all Americans. +Their main investment was a low-cost index fund, from which Clinton's dividends and earnings of $109,000 were taxed. +With contributions by Kevin Drawbaugh; editing by Jonathan Otis +Condoms with Chilipuder, fireworks promote Tanzanian elephant protection +Nature conservationists in Tanzania use an unorthodox way to stop elephants from going into settlements inhabited by humans - they throw condoms at them filled with chilipuder. +The method has proven to be effective, and the Honeyguide Foundation, which had the idea to do so years ago, has intensified its promotion by training volunteers in villages in northern Tanzania to use a nonviolent four-step method to protect their homes and crops without injuring animals. +Previously, many spears used to defend themselves. +Friday is world telephone day dedicated to animal welfare. +"Since we developed the... toolkit, we have been able to observe a change in attitude within these communities, making them much more confident that they can keep the elephants from their fields without harming the elephant," said Honeyguide's managing director Damian Bell in a statement. +The first two steps include the lighting of the elephant with a torch and the blistering into a horn. +If he is not deterred, a so-called "Chiliwolke" will be thrown. +Chilipuder mixed with earth is packed together with a fireworks body into a condom, the end of which is turned down to the ignition. +When it is ignited, the condom bursts with a bang and sprints fine dust to Chilipuder into the air. +A whiff quite usually already out to chase the elephant. +One last possibility is an advertiser that shoots a golfing fireworks into the air, causing a loud, bright explosion. +City Council decides unanimously: no Kioskneubau at St. Goarer Rheinufer +Normally, the merchants ' St. Goarer's investment projects with Kusshand – in particular the retail sector in the core city – are clearly expanding. +However, the City Council now unanimously rejected the request for the construction of a sales kiosk on the Rhine shore in the immediate vicinity of the Rheinbalkons under construction. +"Basically we welcome new traders, but at this location in exposed location on the Rhine river, this kiosk does not fit in," said Michael Hubrath for the CDU faction. +Jewish director crushed Berlin hotel because Israeli pre-election was removed after ' Arab ' call - RT News +A French director with Jewish roots unleashed a media revolt after he had betrayed that the Kempinski Bristol Hotel in Berlin did not list Israeli pre-selection as it asked Arab guests, according to an employee. " +Claude Lanzmann, author of the Holocaust documentary "Shoah", left his anger at the Kempinski Bristol Hotel in Berlin by writing an open letter to the German newspaper FAZ. +During his last stay, Lanzmann tried to find Israel on the hotel's country selection list. +The country, however, was not listed among the countries that can be called directly from the hotel room. +How is it possible in 2016 in Berlin, the capital of the new Germany, that Israel was eliminated and deleted? +Wrote Lanzmann. +Instead, the Kempinksi Bristol offers a way to select Israel via its own call center. +After a statement, the director turned to the hotel reception. +The answer he received there,"shocked him," Lanzmann wrote. +The hotel employee said the measure was a "deliberate decision by the management of the Kempinski hotels." +The reason behind it sparked even more fury in the director. +"The bulk of our guests are Arabs and they have demanded that the preselection be deleted," Lanzmann's employee was quoted as saying. +Israeli ambassador to Germany Yakov Hadas-Handelsman called this a "great shame," the Süddeutsche Zeitung reported. +We were appalled and dismayed by this event. +This is really very shameful. +The fact that this has happened in Germany in exactly this hotel chain is even more shameful. +That does not require any explanation. +We expect the hotel "to draw the right conclusions," said the official. +The incident caused quite a lot of resonance on the Internet, in which people called the whole thing a scandal. +Some told the Kempinski Hotel that it had "succumbed to the alleged calls of Arab guests." +"Shame on you," it said in another post, noting that the hotel, located at the noble Kurfürstendamm, is near a synagogue. +The hotel quickly dismissed all allegations of itself and called the incident an "oversight" and "apologized" at Lanzmann, Der Spiegel reported. +" There has never been a direct statement " not to include Israel in the Quick List," quoting the Süddeutsche Zeitung a spokesman for the Kempinski Hotel. +It adds that the country selection has now been added. +Police deploy tear gas & rubber floors against protesting Brazilian students +Students clashed with police in the Brazilian city of Sao Paulo on Thursday as they gathered to demonstrate against the government's reforms for the public education system. +Police set up tear gas and rubber bullets against the protesters. +The trouble began when police officers tried to disperse the students, causing the police to use rubber bullets and tear gas. +Several hundred students took part in the demonstrations to express their dismay over the plans. +According to the proposals of the governor of the state of Sao Paulo Geraldo Alckmin, slightly fewer than 100 public schools will be closed, while 300,000 students will be implemented to save money. +Some of the protest participants saw graffiti against interim President Michel Temer sprayed on walls. +The latest protests occurred a few days after demonstrators in crowds took to the streets to support the suspended President Dilma Rousseff, who had been removed from office by a Senate vote on her dismissal. +Trade between Russia & Iran suddenly rises to 71% - RT Business +With the lifting of sanctions, according to the Russian ambassador to Iran, Levan Dzhagaryan, the trade turnover between Moscow and Tehran grew by 70.9 percent year-on-year. +Since international sanctions against Iran have been lifted, interest on the part of Russian companies in shops in the country has grown sharply, the ambassador said. +Russian companies are taking on existing links with Iran, while new firms are willing to gain access to the market. +Of course, the further trade expansion is one of the biggest priorities of bilateral cooperation with Iran," said Dzhagaryan. +He noted that trade turnover between Russia and Iran increased by 70.9 percent in the first five months of the year 2016 compared with the same period in 2015, and was $856 million. +In particular, Russian imports into Iran jumped by 91.5 percent and totaled $697 million. +Russian imports from Iran rose 16 percent to $158 million. +The trade recovery has been achieved by supplies of machinery, land vehicles and weapons," said the ambassador. +Dzhagaryan is out for this year from a record number of Iranian tourists in Russia. +Last year, Russian expatriate representatives issued some 35,000 visas, primarily travel visas, to Iranian citizens. +Iran also reached the top 20 of the countries in terms of the number of tourists in Russia. +You could say that the record numbers of Iranian tourists in Russia from last year, will be broken," he said. +At the same time, only relatively few Russians visit Iran, something the ambassador hopes will change. +"I personally can recommend the visit of the cities of Isfahan, Shiraz and Yazd, which have preserved the monuments of the ancient Persian civilization in good condition," he said. +Witnesses sought: beverage market in forest oil surges +A robbery was carried out Thursday evening on the drinks market of Rewe XXL on the forest fire Gerberstraße. +Under the guise of a firearm, three darkly dressed people who had their faces mummified were asked by the employee of the drink market to release cash and then flew first foot and then presumably with a silver VW golf. +How much money has been collected does not involve the police. +The perpetrators should have been between 1.60 and 1.70 meters tall, so relatively small. +The beverage market is directly accessible from the parking deck of the Rewe market. +After the raid in the direction of Gerberstraße, Friedrich-Engelbert-Weg, and from the gravel parking in front of the car park, it is possible to fly with the silver car, possibly in the direction of B 256. +Anyone who made observations at the time of the crime (at 7: 45.00 p.m.), in connection with the robbery, is to report to the police as a matter of urgency. +Nagold: game and fun at summer release +Eight beautiful and happy days spent the children and adolescents of the socio-educational day group/social group work of the child protection bishop Nagold with their carers on their summer vacation in Nussdorf, near Mühlacker. +In the quietly situated Freizeitheim Hardtramdle, the joyful group was hospitalized during the first school holiday week. +Several full-day trips were on the program. +On the one hand, it went to bail with the visit of the string zoo. +Second to Maulbronn, where there was a special children's guide in the world-famous monastery. +The third excursion led to Pforzheim. +In the Celtic Museum in Hochdorf, the group learned a lot about the daily life and the food of the Celts. +On the hot days, the group gathered at the deep lake in Maulbronn, which invited you to jump, swim and plan. +Culinary delights have been pampered by children and caregivers with their self-prepared corpses such as the Sauren Spittle, the Seebronner Pfanznle, Iselshauser-Bloff, English-Breakfast and Tübinger Bolognese. +In workshops was baked, beautiful jewelry made of pearls and stones, or made of wood a Roman mill game. +Other highlights of leisure were fishing in a nearby pond, the evenings on fire and the final "colorful evening". +On the day of the journey home, the sun and the children and young people were happy. +Haigerloch: pilgrims to the gates of mercy +The ministrants from the peace group Eyachtal-Haigerloch St. Anna were on the move on a four-day pilgrimage from Villingen to Freiburg. +Together, four stages have been dealt with. +In order to bridge the period up to the next romantic ride of all mini transmitters in probably two years, the Saint-Anna Oberministrantenround has decided to prepare and carry out a multi-day pilgrimage. +Various pilgrimage goals were examined and it was decided finally for the bishop's town of Freiburg, where this year on the occasion of the Holy Year of mercy with the open gates of mercy at the Freiburger Münster, a special pilgrimage destination was offered. +16 Minis from Bittelbronn, Gruol, Haigerloch and Heiligenzimmern were on the way. +Earlier in the evening, Pfarrer Storost sent out the pilgrims in a small celebration in St. Anna, blessed the pilgrims and gave the pilgrims. +From Horb it was driven by train to the starting point of Villingen, where there was also a Munster of Our Lady, and so the pilgrimage was taken by the Münster. +The individual day tours were framed in the morning and in the evening by a short impulse with various prayers, songs and lyrics. +On the other hand, the minis at field crossings, chapels or churches were also on the way to sing together a song from Pilger-Liedheft. +For the overnight stays, parish heaters of the local parishes were available. +At the milestones, Alexandra Burkhardt and Heidi Faller cared for a tasty as well as strengthening dinner and breakfast. +It went on for the second day on Furtwangen to Gütenbach. +The day after St. Peter, which was the most strenuous stretch of road, had to first descend at around 500 meters of altitude and then come back again. +The deserved reward was in the evenings a common barbecue on the beach. +After the morning impulse on the fourth day of pilgrimage in the imposing monastery church of St. Peter, it went to the final stage to Freiburg. +Visibly relieved and happy, the Minis met in the later afternoon at the Freiburger Münster and went through the gates of mercy. +With a little impulse, God was thanked here. +At the evening fair in the Münster, the mini was greeted by collaborator Markus Obert on the pilgrimage. +After the service, the pilgrims were able to visit the sacristy and the high altar. +The next day was still time for the Breisgau metropolis. +In the afternoon it went back to Horb by train. +In the end, all participants agreed that the days of spirituality and a strong community experience were marked. +Scots Callum Skinner stormed home as Briton wins gold for cycling +Scotland's Callum Skinner raced last night in the men's team sprint at the Velodrom in Rio for glory when the British team defended the London 2012 title. +The 23-year-old from Glasgow took on the anchor role that his compatriot Sir Chris hoy had embraced and made the legend proud when he stormed home to capture a victory from New Zealand's favourites. +England claimed a shocking victory four years ago, while hoy picked up the fifth of six Olympics medals. +They repeated the trick after they holed only a modest sixth place in March at the London World Championships in London despite the resignation of Hoys. +The problem between Beijing and London was the replacement of the driver Jamie Staff. +They did so in good time as a hint. +Hoys's retirement created a gap that Kian Emadi and Matt Crampton tried to close. +Skinner was the man they stayed with when they saw potential in the Scot that has now unfolded. +Hindes, Kenny - who won with hoy four years ago - and Skinner set an Olympic record in the qualifying rounds, but in the standings the New Zealanders won in the first round. +And the British trio won the duel with gold. +Hindes fell short after his round, but Kenny brought the team forward and Skinner held it. +A change of strategy made much of the transformation, in which Hindes drove in a higher gear to slow it down and allow Kenny and, above all, Skinner to keep the pace. +Hoy watched from his position as BBC expert and dropped Skinner, Kenny and Hindes when they rose to the podium. +The 23-year-old Skinner from Glasgow said: "it is a flattering comparison." +I am just here to do my best and make a name for myself. +We set an Olympic record in the final round and beat the world champions. +It was just incredible. +There is no better way to win this. +After the 2012 triumph at Kennys and Hoys, Hindes admitted he deliberately fell on the train after a weak start. +He later withdrew that statement and there was no objection from England's rivals. +This time there was no such problem with such a surprising victory. +Hindes said: "it feels with all the GB flags in the gallery like London." +We have come together as a team in the last three months. +We have come away so badly in so many world titles that it was incredible to win again at the Olympics. +That is an event, a gold medal for the nation, which has won seven out of 10 titles in both Beijing and London. +If that is a barometer of our progress in the last five months, we expect successful five days in the velodrome. +With the form of Kennys, it is in the realm of the possible that he repeats Hoy's victory of three Olympic gold medals in a competition. +That would be for Kenny - who is exactly 12 years younger than hoy, who was also born on March 23 (an apparently sacred date for British sport; on the day were also born Steve Redgrave, Mo Farah and Roger Bannister) - a yield of six gold medals and a silver medal. +That would be the equivalent of hoy. +Kenny is next in the sprint, which starts today and will go over three days. +The 28-year-old from Bolton said: "I am enjoying this just for the moment." +The team event is always best. +You can win it with his colleagues. +It feels a bit lonely to win alone. +Hindes said: "if he wins two more gold medals, he should be beaten to the knight." +It was the only medal contest of the day, but there was further good news for England. +Sir Bradly Wiggins, Ed Clancy, Steven Burke and Owain Doull qualified with the fastest performance in the four-four-kilometer race. +They came in at 3: 51.942 on goal. +The world record holder, who won gold in London in 2012, was third at 3: 51.659. +The first and final round (22.42) will take place today on the second day of the contest, where Wiggins will certainly be in focus. +He had struggled with appointees before the qualification yesterday, when officials called him to measure his body size. +In the corresponding women's competition, which will be continued and finished tomorrow, Laura Trott, Joanna Rowsell Shand, Elinor Barker and Katie Archibald of Milngavie in world record time in 4: 13.260. +The GB team relies on its strong rail cycling team to dominate the middle period of the Olympics and pick up a bar of medals. +After a truly extraordinary display of absolute dominance in Beijing and London, expectations for Rio were lowered. +It played out drama in the background, according to the resignation of technical director Shane Sutton in April amid sexism and bullying allegations, as well as the retirement of sizes such as hoy and Victoria Pendleton. +But if you look at the first evening of the competition at the velodrome, it looks like the now legendary reputation of GBS, which reached its peak at the perfect moment, could be repeated again. +Future of Portland's melting plant due to repeal of energy contract +The future of Portland's aluminum smelting in Victoria - as well as hundreds of jobs from workers - are at stake, as the plant operator will terminate the energy supply contract and thus lift all supply contracts, the energy company said. +That move followed the government's decision in Victoria earlier this year not to grant any further subsidies to operate the plant. +A subsidy set for 20 years expires in November. +Up to 2000 jobs at Alcoa's plant in Portland are at stake. +No less than 2000 jobs - direct and indirect - could be at risk when closing. +In addition, there could be knock-on effects, as the melting plant consumes about 10 percent of Victoria's total power generation. +In 2014, Alcoa completed the Point Henry melting plant, which led to a closure of the Anglesea power plant last year. +Alcoa's melting plant in Portland is losing money and risking a closure. +This move follows years of speculation about the future of the plant, originally as a result of the strong Australian dollar and most recently due to the electricity price for the plant. +AGL, which supplies the large aluminum melting plant with its Loy Yang A power plant in Latrobe Valley, said it expects three more owners to terminate their contracts. +The plant is in the majority owned by a joint venture between Alcoa and Alumina, of which the Chinese company CITIC and the Japanese Marubeni Corp hold smaller shares. +"AGL assumes that the plant in Portland will continue to operate, which means further physical demand for electricity by the melting plant," the company said. +AGL continued to say that the contracts are so-called "backup business", which should have come into effect from November 2016. +The contracts have a 12-month notice period, so they will end in 2017. +"From that point of view, AGL assumes that the contracts will contribute to revenue in fiscal year 17," said the electricity supplier. +All potential effects on AGL revenues from FY18 are currently limited by the forecasts of strong futures markets for wholesale electricity prices. +AGL announced that it had already written off the value of the contracts in its annual accounts of $187 million in "expectation of a termination." +Alcoa said the decision to tender the contracts would not affect the "ability of Alcoas... to operate the melting plant or to ensure the power supply to the melting plant." +The U.S. company said it completed a 20-year contract with Loy Yang in 2010, which should have come into effect from November this year, even if it still owes a statement as to why it resigned from the contract. +Analysts are warning about the industry's poor economic conditions ahead of the possible closure of the Portland melting plant in Victoria and the Tomago plant near Newcastle. +Referring to analysts ' statements earlier in the week, Head of Operations Stephen Mikkelsen said Portland had about 600 megawatts and Tomago consume about 900 megawatts of electricity annually. +Should both plants disappear from the market, this would mean a significant reduction in demand on the [electricity market]. +And for us as power producers, that would not be good," he said. +More than just a Kardashian reality TV star, KENDALL is on the cover of the September issue of Vogue +KENDALL Jenner, 20, model and fourth daughter of the manager and mother of the Kardashian-Jenner clan Kris is on the cover of the coveted September edition of US Vogue. +KENDALL, who is the brand ambassador of Estee Lauder and ran to the Fashion Weeks in Milan, Paris and New York, announced the news on her Instagram account on Thursday. +"In a room full of people I love, brought me the sight of this cover to the cry," wrote KENDALL. +The unveiling of the covers followed a bizarre (or simply Keeping Up with the Kardashians similar?), scripted reality video showing the entire Kardashian-Jenner family (with the exception of problem cases Rob and Caitlyn, and in the presence of the most popular showbiz uncles and producers of Keeping Up Ryan Seacrest) as they forget the cover of their sister and that ends with a classic twist: they have all planned a surprise party. +That represents the clichéd plot of almost every birthday episode of a children's show (Seacrest brought the sentence,"you would have forgotten that we had forgotten you?," with the honesty of a cartoon rabbit on a sink at 8 o'clock in the morning), but Kris had to somehow let her other girls take part in this publicity. +With a view to the September issue of Vogue, a new era of the Kardashians has certainly begun. +Kendall's big sister Kim may have beaten her on the Vogue cover (she and her husband Kanye West were to see it in April 2014), but the cover of the September edition of the magazine is a league for itself. +The September issue is for Vogue the most sold edition of the year. +With a scale that resembles an imagery rather than a fashion magazine, the issue attracts a large number of advertisers (Laut Fashionista were advertising from the 832 pages of rolling 615 pages of advertising). +The unveiling of his cover stars is so eagerly anticipated that images of the magazine leaked in the past two years even before the official announcement. +Women who were already on the cover include Naomi Campbell, Linda Evangelista and Kate Moss. +In recent years, there have been clearly more "celebrities who are modelling" as "models who are celebrities" on the cover. +Oscar winner and Dior brand ambassador Jennifer Lawrence was on the cover in 2013, a year after Lady Gaga had the honor. +But even with the low chance that Ms Jenner - who is described by the magazine as the "breakthrough model" of her generation - falls under the previous category, she is in good company. +These celebrities are not related to famous people or reality stars or youths from today who know how to turn a good Snapchat video (even if it is all about Jenner). +They are really talented women who stand out in the entertainment industry. +Beyonce, who appeared on the last cover, had with the release of Lemonade one of the most successful years of her career. +Of course, Jenner's success does not suit everyone. +With her reality TV story, Jenner's position in the fashion world was always somewhat tense. +In June, the former Victoria's Secret model criticized Stephanie Seymour Jenner and her colleague Gigi Hadid and called it "the mist of the moment." +Those feelings cooked up again when the news came out with the appearance of Jenners on the Vogue cover. +But, at the point of dissatisfaction, the point seems to be getting off the ground. +KENDALL Jenner is on the cover of the September issue of Vogue. +It is, in the truest sense of the word, a supermodel. +She runs for Marc Jacobs. +She makes adverts for your Grunting of Estee Lauder. +She and all her sisters sell you pictures of themselves on their respective paywall apps. +She sells from her made pictures of Cindy Crawford's daughter to the magazine LOVE. +And in her spare time she is seen in reality TV, presumably only to see her sister Kourtney and their children. +Community law centres have 160,000 people each year +More than 160,000 of the country's aid needs are rejected annually by community law centres, while the industry is capitalizing on the impact of further cuts on already overloaded transactions. +In Queensland, three out of five people - mostly elderly people, immigrants, vulnerable workers, victims of violence and those who do not have funds for unjust delogies and the like - are already dismissed for seeking free legal advice and legal advice. +Legal services of the municipality, which are already over-stretched, are ready for further cuts. +As of June next year, these legal centers will lose another 30 percent of their federal funds. +The director of community law centres of Queesland James Farrell said the latest survey of the National Association of Local Law Centres revealed that thousands of people are already being turned away each year. +Farrell said the situation would only get worse without a repeal of the federal government's decision. +"Queensland's community law centres are chronically underfunded, which means thousands of people are being turned away from important services you need," he said. +People who leave violent relationships, people with unmanageable and crushing debts, families who go through separations, workers who have been unfairly sacked - all these people have problems of a legal nature and this survey shows they cannot get the help they need. +The federal government will cut funds by 30 percent from June 2017, which means that thousands of more vulnerable people from Queensland will be forced to cope with their legal problems without any help. +We call on the Federal Attorney General and Federal Minister of Justice, as well as Senators of Queensland George Brandis, to immediately lift these budget cuts so that people can get the help they need in the event of legal problems. +Last year, the national government fulfilled its commitment to raise funds for legal aid to the national average. +It is now time to look at the needs of community law centres and their customer communities and that the Palaszczuk Government is investing in this important work. +Donald Trump election campaign indicted after staff allegedly pulled gun +New York: Donald Trump's campaign has been indicted for alleged inaction after she was told that her campaign manager for North Carolina turned a firearm to an employee in February while traveling in a jeep in February. +The incident is described in an indictment filed Wednesday in the District Court of Charlotte by Vincent Bordini, a former software programmer for the campaign in that state. +Bordini admitted for months that the matter would be settled internally before realising that "that would not happen." +The campaign manager, Earl Philip,"drew a pistol, put his right index finger on the deduction, and rammed the run in Vincents Kniekehle," gave Bordini in his indictment. +After complaining to the local and regional campaign manager, Bordini noted that at least four other people had already made the same experience with Phillip, he admitted in the indictment. +"Guns do not have to be fired to cause damage," admitted Bordini. +The indictment comes just two days after the Republican presidential nominee sparked an uproar when he told a crowd in North Carolina that the "second Amendment people" - firearms owners and gun lovers - should take action if his rival Hillary Clinton is elected and judges should appoint. +Trump's campaign made it clear that the media had taken his words out of context and that he would not incite violence. +Bordini's complaint calls for damages from the campaign for due diligence and Philip for bodily injury and sustained psychological damage. +Trump's press secretary, Hope Hicks, was unable to reach an opinion. +Attempts to contact Philip also failed. +WCCB, a local news station in Charlotte, reports that Phillip is no longer employees of the campaign. +Calls at his consulting company, Innovative Consulting Services, did not respond. +Republican presidential candidate Donald Trump has so far held a controversial campaign. +The trial is Bordini v. Donald J. Trump For President Inc., 16-CS-14300, Supreme Court, County of Mecklenburg (Charlotte). +Berlin/Schwerin: poll ahead of country elections: SPD and CDU lose +In the upcoming elections in the federal states of Mecklenburg-Vorpommern (September 4) and Berlin (18 September), there are significant losses for the government parties SPD and CDU. +This resulted in representative surveys of opinion research institute INSA for the "Bild" newspaper (Friday). +While the red-black ruling coalition in the north could continue to govern narrowly, this is not possible, according to the survey figures in Berlin. +In both states, however, the SPD would be the strongest party and would have a good chance of continuing to put the head of the government. +In Mecklenburg-Western Pomerania, the SPD plunged from 35.6 percent five years ago to 24 percent. +The party, according to the poll, was only slightly ahead of the CDU, which could come back to 23 percent. +The third place is controversial between the left and the AfD. +The left would be 19 percent (previously 18.4 percent), the AfD would be represented with 19 percent for the first time in the country Friday. +The Greens, despite slight losses with 6 percent (previously 8.7 percent), were returning to the Schweriner Landtag. +NPD and FDP would not be represented in the Landtag with 3 percent each. +For the Berlin Chamber of Deputies, the SPD would be only 23% (2011: 28.3%). +The CDU reached only 18 percent, after 23.4 percent. +They would still be behind the Greens with 19 percent (2011: 17.6 percent), but before the left with 15 percent (previously 11.7 percent). +The AfD would be represented in the Chamber of Deputies for the first time, with 14%. +With 5%, the FDP could hope to return, but the pirates would miss the move, unlike in 2011. +Nokia 9000 Communicator: the first smartphone +E-mail and Internet in slow motion: 20 years ago, the Nokia Communicator came onto the market. +The successors dominate the world today - its manufacturer experienced a disaster. +The device weighed nearly half a kilogram and was more than four times as heavy as an iPhone 5. +It was thicker and bigger, so it was not good either. +On the contrary, it was pretty scary. +The built-in memory initially averaged eight megabytes, which would be enough today for about two Selfies with high resolution. +An iPhone is now delivered with at least 16 gigabytes. +The "Nokia 9000 Communicator" came in exactly 20 years ago, on August 15, 1996, into the shops - and it was the first smartphone. +For a few euros, lovers can still buy the equipment on the Internet, but they somehow come from the Stone Age of the Internet age. +20 years ago, however, the Communicator was a sensation. +The Finnish mobile phone manufacturer had announced the product a few months earlier at the CeBIT computer fair in Hannover, Germany. +In fact, the new mobile phone could provide a lot for then-standards: SMS and e-mails could be sent and received, even by fax was the Communicator to reach. +Even access to websites was possible via HTML browser, albeit agonizingly slow. +A calculator was available, a digital address book and an electronic calendar. +There was a small antenna, and the cellphone could be folded up like a laptop. +Then there was a small keyboard and a black-and-white screen. +Pretty proud was the price: 2700 D-mark, so about 1400 euros. +The average selling price of a smartphone in Germany was 392 euros in 2015. +No one was able to predict in August 1996 that the Communicator would become the beginning of the smartphone era. +Since then, everything has been different. +The smart phones are a success story, though not for Nokia. +The mobile phone division of the Finns experienced an unprecedented disaster, was eventually sold to Microsoft and settled. +The market now dominates suppliers, all of which came much later than Nokia. +Always and everywhere online, this is everyday life for a lot of people. +In 2015, there were nearly two billion smartphone users worldwide. +About 1.4 billion devices were sold, Samsung and Apple alone accounted for 555 million pieces. +Global sales of equipment are around € 400 billion. +In addition, there are the good business of the countless app providers and the telecommunications groups. +Around the smartphone, an entire industry has now emerged. +The crucial breakthrough to the mass market came only in early 2007, when Apple chief Steve Jobs announced the launch of the iPhone at the Mac World. +He promised three devices in one: a music player, a phone and an Internet communicator, all easy to use by touch screen. +Apple's winning streak began, and today the iPhone is the most important product of the group. +Nokia, Motorola and Blackberry, which dominated the market, had the downside. +They eventually disappeared, Blackberry has to fight. +The sayings now have Apple and Asian suppliers such as Samsung. +The smartphone is taken for granted 20 years after its invention. +On average, every German now looks 88 times a day on his mobile phone. +"We all need to learn to put the smartphone away, too," said Janina Kugel, in the Siemens board of staff. +Permanent accessibility is now a curse and a blessing. +England must guide the Olympic spirit and expand Heathrow +Heathrow will bring renewal and prosperity not only in our local communities and throughout London, but throughout the country. +For me, that represented the biggest attraction of Heathrow, just as it did in London at the time in 2012, when we ran a great effort to ensure that all our nations and regions benefited from the games. +The Olympics brought great benefits to Stratford and the East End. +And that will be achieved again by creating new opportunities for locals and businesses near Heathrow. +For our local communities, we alone will create 10,000 new apprenticeships, 40,000 new jobs and put an end to youth unemployment in the airport environment. +Just as they were ahead of us in London 2012, there will be those who will think that the challenge of the expansion of Heathrow is too great. +I was told that England will never be ready for the Games and that we will embarrass ourselves on the world stage. +The doubters were wrong in 2012 and they will also be wrong at Heathrow. +There are always obstacles to overcoming, but Heathrow answers every question put to him. +Like the Olympics, Heathrow is for many, not individual, an infrastructure project. +Enlargement is a way of creating up to 180,000 new jobs, £ 211bn of sustainable growth and leaving a legacy of skills and employment both to the airport and to the whole of the GB. +We have a great team at Heathrow that has implemented a £ 11bn expensive infrastructure investment programme in time and budget, from the T5 - which was chosen for five years in a row to the world's best airport terminal, to the T2, which was built amid the world's two most frequented runways. +Now they stand ready to deliver a third runway, which is backed by £ 16 billion of private investment. +The 2012 London Games were a great success for GB and I am confident that the expansion of Heathrow will also be one. +It is time for us to steer this Olympic spirit and expand Heathrow, thereby securing our future trade and creating a legacy of skills and employment that England can be proud of. +Lord Paul Deighton is chairman of the Heathrow Board and former Commercial Secretary to the Treasury +Adblock Plus, Facebook in ' cat and mouse game ' on ad blocking +For companies that make money with online advertising, according to one of the software manufacturers, attempts to bypass ad blocking, a "cat and mouse game" are the same. +On Thursday, just two days after Facebook announced it would block ad blocking on its desktop site, Adblock Plus published a blogpost in which it said users could update their filters in the program to block advertising on the social network again. +On Tuesday, Facebook announced that its desktop page would change the coding of its advertisements to make it more difficult to detect what part of the page is advertising. +But Adblock announced that it has found a new way to circumvent the new codes. +In a blogpost, Adblock Ben Williams spokesman Ben Williams wrote that "this kind of hit-and-go battle between the notifying open source community and the bypass has already been underway since the invention of ad blockers," and that it is possible that Facebook will soon come up with a new solution. +The fact that the world's largest corporate social media company has entered the fray is a strong indication of how worrying ad blockers have become for the industry. +Worldwide, according to a study last year by Pagefair and Adobe, about 200 million people use ad blockers; nearly four times as much in 2013. +With 1.03 billion daily active users accessing Facebook via their mobile devices, mobile advertising accounts for 84 percent of advertising revenue Facebooks. +The company has it on ad blockers on desktop PCs, as mobile ad blockers have no effect on Facebook's mobile app for the social network and Instagram, a spokesman said. +Advertising on desktop PCs accounts for a sufficient share of revenue, so Facebook seems to be worth the investment of such a step. +On Tuesday, Facebook announced that it would update its "ad preferences tool" to give people more control over advertising aimed at them. +On Thursday, Facebook claimed that Adblock's new filters would be worrying because they would also block content on the site that are not advertising. +"For users, that is not a positive experience, so we plan to address the problem," said a spokesman for Facebook in an e-mail message. +Ad blockers are a blunt means, which is why we have focused instead on developer tools like Ad Preferences to put more control into people's hands. +Woman killed in suspected suicide on Swiss highway +The victim was on the highway in the middle of the night. +Police are calling witnesses after a woman was ousted in the early hours of Thursday amid a suspected suicide of several vehicles on a highway. +The incident occurred on the A1 near Morges in the canton of Vaud shortly after midnight. +A woman took to the streets in the Dark "in an act of desperation" and was hit by several cars, police said in Vaud. +It is obvious that a Swiss woman aged 49, who was overrun by several vehicles, including a truck, wanted to kill himself. +She still died on the ground. +Several drivers have already been heard, but some have still not been identified, said the police, who asked these as well as any witnesses of the incident to sign up. +An investigation has been opened, which is a "logical" step in such a situation, Gilles Hofstetter told the Le Tribune de Geneve. +However, it remains to be seen whether any of the drivers will be shown. +Was a collision preventable? +That is something the prosecutor has to decide," said Hofstetter. +Two similar cases in the past five years show that drivers are not being held accountable. +In each of the two cases - where a person ran in the dark on the highway - it was decided that motorists do not have to assume that a pedestrian runs in the middle of the night on the highway, the newspaper said. +Last year, a policewoman accused of negligent killing was acquitted after she overran and killed a man who was on the A1 near Payerne in August 2014. +The 22-year-old victim had been drinking and had become unconscious on the street, the court heard. +The court found that the policewoman -- who had responded to an emergency call -- drove in a justified manner and that the presence of a man on the street was a "completely extraordinary and unpredictable situation," the judge said. +Anyone who has any further information on the incident Thursday near Morges should contact police under the number 021 644 83 46 or 021 644 44 44. +NASA climate model: Venus was once habitable +Venus was probably once habitable, according to the projections of a new NASA climate model. +Scientists at the Goddard Institute for Space Studies of NASA developed a model to discover the past of Venus using tools and algorithms similar to those of climate researchers. +The model was designed to determine whether Venus could have taken up similar conditions with its hot, waterless surface and carbon-dense atmosphere. +Scientists have previously hinted that the slow turn of Venus could be explained by its dense atmosphere. +But the latest simulation suggests that Venus may have had a thin, earthquake-like atmosphere and yet slowly turned on. +The model also illuminated the topography of the early Venus. +The planet probably had more dry areas than Earth, but once had enough water and geographic variability to house life and protect it from rapid evaporation. +The early Venus also benefited from a sun that was 30 percent matter. +"In the GISS model simulation, the slow rotation of Venus exposed its day side of the sun for almost two months," explained GISS scientist Anthony Del Genio in a press release. +This warms the surface and produces rain that creates a thick layer of clouds, which acts like an umbrella to shield the surface from much of the solar heat. +The result is average temperatures that are some degrees cooler than that of Earth today. +The model produced a history of Venus similar to the evolution previously suspected of planetary researchers. +Although it was probably habitable, Venus was exposed to too much heat and ultraviolet light over the course of several billion years. +Their oceans evaporated and their water vapour was burned away by the ultraviolet light. +As their Hydrogen escaped only a thick atmosphere of carbon dioxide with a deadly greenhouse effect -- the Venus as we know it today. +The researchers shared the results of their new Venus climate model in the Geophysical Research Letters. +Patrick Roy resigns as coach of Avalanche +Patrick Roy resigned Thursday as coach and Vice President Of Hockey Operations of the Colorado Avalanche and led to minor co-determination in the team's decision-making process. +Alternate President/General Manager of the Colorados Joe Sakic confirmed this decision and noted that the association will immediately look for a new coach. +"In the last three years, I have met my duties as head coach and Vice President Of Hockey Operations of the Colorado Avalanche with energy, passion and determination," said the 50-year-old Roy in an opinion. +I have been thinking long and a lot over the summer about how I could improve this team to give it more depth, it needs it and bring it to a higher level. +To achieve this, the trainer's vision and Vice President Of Hockey Operations must be perfectly matched to that of the organization. +He must also have a co-determination right in decisions that affect the team's performance. +These conditions are not being met at the moment. +Sakic, who hired Roy on May 23, 2013, thanked him for his contributions to the team. +"Patrick has informed me of this decision today," said Sakic. +We all appreciate what he has done for our organization and wish him only the best for the future. +Roy was honored during his debut season at the 2013-14 Avalanches as the winner of the Jack Adams Awards as the league's best coach. +He led the club to 112 points and to first place in Central Vision, but Colorado was beaten in the first round of the playoffs by Minnesota and missed the postseason in each of the last two years. +The Avalanches recorded a 39-39-4 mark in the 2015-16 season and fell behind the Wild for a second wild card spot in the Western Conference by five points. +As a Hall of Fame goalkeeper, Roy won four Stanley Cups -- two plays with the Montreal Canadiens and the Avalanche. +North Sea oil workers resume talks, set off strike +Labor disputes over pay for North Sea oil workers are suspended while all the contenders are set for a new round of talks, negotiators said. +Strikes against the oil field service provider Wood Group have been conducted sporadically on platforms in the North Sea, operated by Royal Dutch Shell. +"Wood Group as well as the Unite and RMT unions can confirm that we have agreed to reopen the settlement process of the current dispute," it said in a joint statement. +We will hold some full-day sessions in the next few weeks, which will start early next year to address the issues. +The unions said their last strike, which is the first in over 25 years, was a protest against possible wage cuts of up to 30 percent. +Wood Group this year cut rates to its contractor in the North Sea by about 9 percent due to negative market pressure. +The company's rate cut follows a 10-percent decline for onshore contractors in 2014. +The company said additional cuts would give the company the space needed to come through the market downturn. +Shell has laid off thousands of people and announced plans to give up its oil and gas business activities in up to 10 countries as it rationalises its activities as a result of its mega-mergers with the British energy company BG Group. +Energy companies are under pressure because of lower crude oil prices, an economic situation that was heightened by the British decision in June to leave the European Union. +Scottish MP Dave Anderson met with Labor leaders earlier this week to discuss one of the biggest labor disputes that have taken place in the North Sea for a generation. +The North Sea is important to the regional economy, he said. +"In the North Sea and across the country, we need an economy that works for many and not just for a few," he said in a statement. +2016 is expected to be less than $1.4 billion in spending on new projects in the North Sea compared to an average of around $7 billion in the past five years. +Kepler measures rotation rate of stars in star cluster of Plejades +The newest mission with the Kepler Space telescope has helped astronomers to collect the most complete catalogue of rotation rates under the stars of the Plejades ' star building. +The new data helps astronomers to understand why stars rotate at different rates in star clusters, as well as in what context the rotation periods are with the planetary structure. +"We hope that by comparing our results with other star clusters, we will learn more about the relationship between the mass of a star, its age and even the history of its solar system," said Luisa Rebull, a researcher at Caltech's infrared Processing and Analysis Center in Pasadena, in a press release. +The star cluster of the Plejades is 445 light years away from Earth. +Many stars in this cluster of stars, created about 125 million years ago, now reach adulthood. +They are now turning the fastest. +At peak rotation rates, these mature stars produce large amounts of star winds. +As these winds travel through the stars ' magnetic fields, they have a braking effect on the stars. +When a star is aging, his rotation rate starts to slow down. +Kepler measures the rotation rate of each star by recognizing the time between the appearance of a recognizable star flecks -- such as sunflecks --. +The latest catalog of rotation rates indicates that more massive stars turn slower than less massive stars. +Rebull compares the stars with dancers, with bigger stars turning slower pirouettes than smaller ones. +"In the" ballet "of the Plejades, we see that slow rotors tend to be more massive, whereas faster rotors tend to be very bright stars," said Rebull. +As the star of the Plejades is so close, it serves as an ideal cosmic laboratory to compare stellar qualities such as rotation rates. +"The star cluster of Plejades offers an anchor for theoretical models of stellar rotation in both directions, younger and older," said Rebull. +There is much in front of us that we would like to know more about how the How, When and Why Stars slow down their rotation rates and hang up their "dance shoes". +Rebull and her colleagues have extensively reported in three newspaper reports on their latest analysis of the Pleijades ' rotation rates, which will soon appear in the Astronomical Journal. +A controversial baseball star emerges +The tears ran faster at Alex Rodriguez than the U.S. baseball star in best days from Base to Base. +After his emotional resignation announcement, the 41-year-old professional will wear the jersey of his New York Yankees on August 12 against the Tampa Bay rays. +"I love this game and this team." +"I say ' Goodbye ' to both," explained the 14-time all-star game participant of Major League baseball (MLB). +Rodriguez was voted the league's most valuable player three times, in 2009 he won the World Series with the Yankees. +His signature under a ten-year contract awarded him $27 million annually since 2007. +Until the end of the contract on December 31, 2017, he will serve as a consultant and youth coach - on full salary. +As a player, it paid Rodriguez back with performance for a long time. +With 696 homers, 3114 hits and 2021 points for his teams ("runs") for the Seattle mariners (1994-2000), the Texas Rangers (2001-2004) and the Yankees since 2005, he made some milestones. +With Hall-of-Fame members Hank Aaron and Willie mays, only two other baseball players have similar values in the most important statistics. +But in baseball's glory hall, the 41-year-old is not likely to be included. +Because so successful Rodriguez - nicknamed "A-Rod" - was on the field, so controversial is his appearance outside the square. +As early as 2009, the superstar at "ESPN" admitted to having taken banned steroids between 2001 and 2003. +In August 2013, it was closed for 211 lots due to involvement in the so-called Biogenesis scandal by the end of 2014. +Rodriguez is considered the prime suspect, for years, to have received performance-enhancing funds through an anti-aging clinic in South Florida. +After a legal battle, the lock was reduced to 162 encounters. +"The league might even have done me a favor for the year 2014, because I have been through 20 years without a break," Rodriguez told reporters at the time. +Even his farewell days do not go straight. +While many baseball legends get the big stage again in their last games, Rodriguez often had to sit on the bench. +"My job does not include a farewell tour." +"My job involves trying to win every game," Yankees coach Joe Girardi said. +After all, Rodriguez, who was married to actress Cameron Diaz and echoed relations with pop star Madonna and actress Kate Hudson, expressed sympathy for fans from the Yankee archrival Boston Red SOx. +"We want A-Rod," sang the supporters at the 4: 9 defeat against the Rodriguez team. +Olympics 2016: Chen Xinyi, Silwia Danekowa and Adrian Zielinski are first doping cases +Caught: due to a positive doping test, Adrian Zielinski is not allowed to start from Poland in Rio. +Rio de Janeiro - The 2016 Olympics are overshadowed by the first official doping cases. +A caught athlete would have almost won a medal. +Before the seventh race day, the first official doping cases became known as the Olympic Games in Rio de Janeiro. +Chinese swimmer Chen Xinyi, 3000-meter obstacle runner Silwia Danekowa of Bulgaria and Polish weightlifter Adrian Zielinski have been tested positive and ruled out in Brazil - just before the start of the already critically acclaimed athletics competitions, these messages come at the untime. +Last Sunday, Chen showed the diuretic hydrochlorothiazid, which is used as a masking agent for doping substances. +The International Sports Court CAS confirmed its exclusion from the Olympic Games on Friday afternoon. +On Sunday, the 18-year-old had finished fourth in the final over 100m butterfly, only by 0.09 seconds she missed the bronze medal. +On Friday, Chen should have taken part in the forerunners over 50 m free style. +Chen has requested the opening of the B sample and a hearing at the International Olympic Committee (IOC). +The National Association takes the matter "very seriously and requires full cooperation in the investigations," Xinhua quoted a news release as saying: "we will cooperate with the International Sports Tribunal CAS and will accept the verdict." +For the first time in history it is no longer the IOC, but the CAS responsible for sanctioning athletes with positive cases. +Also on the night of Rio, the news about the positive sample at Danekowa went through, the 33-year-old went into the offensive itself. +"I had three tests, all negative, and my fourth test was positive", this was "an incredible shock," she told the Bulgarian TV channel BNT. +She is innocent,"the only explanation could be dietary supplements," the athlete said. +According to the report, the banned substance is the blood doping agent EPO. +Danekowa has been provisionally suspended, according to BNT, the B sample has already been positive. +Bulgaria's Prime Minister Bojko Borissov immediately spoke with criticism of the athlete. +"I do not understand why the athletes do not draw the right conclusions," he said, adding: "we Bulgarians are under observation, so many have already been ruled out." +For example, all the weights from the chronically doping-impaired nation must not take part in Rio. +On Friday, the case was also known as "Adrian Zielinski," the London Olympic champion in the class up to 85 kg, as his brother Tomasz tested positive for the anabolic steroid Nandrolon three days earlier. +Both deny enrollment, but both are not allowed to start in class up to 94 kg. +Before the start of the athletes, the Danekowa case is another major blow to the reputation of the whole sport. +The International Federation of IAAF had banned the entire Russian team except for systematic doping, and Kenya also produced a lot of bad news in Rio. +In swimming, the previous offense in China had also caused fierce clashes between athletes. +So the Frenchman, Camille Lacourt, attacked Chinese Olympic champion Sun Yang harshly. +"Sun Yang pinkelt purple." +"When I see the podium over 200 m free style, I want to hand over," Lacourt said on French radio. +Sun was also at the centre of a dispute with the Australian Mack Horton. +"I have no time and no respect for doping fraudsters," this one said. +Sun had tested positive for the stimulant Trimetazidin at the Chinese championships in 2014, but had to sit down only a three-month lock. +Data clamp: so perfidious blacker hackers get their ransom +Programmers of blackmail malware are currently targeting companies - and they are successful. +According to a recent survey of malware-defense specialists Malwarebytes among 540 companies in North America, Britain and Germany, 40 percent of companies surveyed over the past 12 months have been at least once, in part, victims of an attack with blackmailer software. +In Germany, nearly 20 percent of firms were already targets of a ransomware blackout. +40% of the victims willingly paid the ransom demanded by the perpetrators in order to be able to use the systems and data that were attacked. +According to the observations of Malwarebytes, the perpetrators are specializing in attacks in corporate networks. +If they are successful there, the potentially blackened ransom is significantly higher than for private users. +"We are currently watching a frighteningly rapid evolution of the malware," explains Malwarebytes boss Marcin Kleczynski in talks with the "world". +In 2008, most malware programs were designed to send advertising. +Then the perpetrators discovered extortion software for themselves. +Only private users were the target, but the switch to company attacks has been terribly fast over the last few months. +Ransomware works according to a simple pattern: once active on a victim's computer, it searches for recently modified files such as Word, Excel or database files, as well as archives of images and videos. +These files encrypt the ransomware and erase the originals in a sustainable way. +Then the software presents the demands of the blackmailers. +In order to get the end keys code to the files, the victims must transfer money - usually in the form of the cryptocurrency Bitcoin. +However, where the personal photo database is at stake for private users, companies are concerned with sensitive customer data or project databases, without which the production is closed. +As a result, the damage occurs when a ransomware strikes. +22% of the affected German firms reported revenue losses by Ransomware, 13% had to disrupt business altogether; in one case, people were in danger of life. +In Germany, hospitals have already been victims of attacks, whose patients can be threatened by the loss of medical records. +"We always tell the victims: do not pay, it only encourages the problem," explains Kleczynski. +But 80 to 90 percent of firms that pay are getting their data back. +It is difficult for managers to reject the perpetrators ' demand in the face of a standstill in operation. +The hackers, in turn, know this and are trying everything to build a good reputation. +In a recent study, F-Secure security researchers examined the user interfaces and contact with the blackmailers and come to the conclusion: the perpetrators are actually trying to build some kind of customer service to take more money. +They declare their victims by chat, how they can pay by Bitcoin, set up freely accessible support websites or decrypt sample files. +And if private individuals are redeemed after payments of a few hundred euros, companies will have to negotiate hard and pay five-digit sums to get their data back unencrypted. +Given the potentially high and relatively risk-free profits from ransomware blackouts, the hackers are becoming more professional and sharing the work, explains security expert Chester WISNIEWSKI of the antivirus provider Sophos: "a single person can write a Ransomware about within a week." +However, it is more likely that there are three or four people. +The programmers then sell their malware in the form of a software module to the actual blackmailers. +The previous malware kits were created by buying the malware itself, consulting and additional tools for a unique fixed price between 1000 and 10,000 dollars. +"Included in the scope of delivery is an adaptation tool so that smaller configurations, appearance and branding can be changed," says WISNIEWSKI. +The blackmailers then look for more hackers to spread the freshly bought software among the victims. +We live in a service economy. +So you log into one of the forums underground, buys the set of a criminal and instructs you to install the software on as many PCs as possible. +Payment is made per infected computer. +"Usually the criminals charge spammers with the spread," explains WISNIEWSKI. +The risk of Ransomware is now known to many companies that better secure their data. +More than 50 percent of company IT managers in the Malwarebytes survey rely on the ability to repel Ransomware using file back-ups and scanner software. +Accordingly, the perpetrators are already pursuing new strategies. +"If the encryption of data alone is not a sufficient threat to successful performance, the perpetrators are threatening instead with the release of sensitive data such as customer lists or price calculations," explains Malwarebytes boss Marcin Kleczynski. +As a result, the potential for damage, depending on the type of data, is much higher than before. +It would also be possible for the perpetrators to take completely new targets on the Internet in the future. +At the hacker conference Defcon, security researchers showed how they could get a thermostat connected to the Internet under their control. +In the middle of winter, the release of such blocked heating could well be worth a ransom. +If the perpetrators then block an entire production line in a factory instead of heating in the future, Ransomware could also become a topic in industry 4.0. +One for all cases +Honda HR-V is flexible and everyday +In the small HR-V, Honda wants to pack everything: a little SUV, a little coupé and also the versatility of a minivans. +Sounds pretty overloaded, but the HR-V, constructed on the same new platform as the new jazz, turns out to be very flexible in everyday life. +Although only 1.60 m high HR-V looks small, the passengers have a lot of space in the first row as well as in the rear, it does not work at any point. +The materials of the interior are well processed and have a pleasant effect, only the cockpit upper side is there. +The HR-V is more versatile than comparable vehicles. +There is not only a trunk of 453 litres at high and 1026 litres, but there are the "Magic Seats". +This is less magical than it sounds: the rear seats of the rear seat can be folded up like cinemas and thus offer storage space, which is 1.24 metres high from the floor to the ceiling. +The trunk can be loaded well, but the load height of 650 mm is slightly higher than in the comparable Peugeot 2008. +The tested 1.6-l diesel with 88 kW/120 horsepower accelerates the HR V thanks to torque of up to 300 nm in wide speed ranges. +However, he is likely to do his job somewhat quieter. +The daily consumption of 4.7 l/100 km is pleasing. +There is another motorization: a 1.5-lb petrol tank with 96 kW/130 horsepower. +An all-wheel drive is not offered. +Driving behaviour is balanced, a good compromise between dynamism and comfort. +But steering is likely to be a little more direct. +The equipment in the tested top variant "Executive" leaves nothing to be desired. +The security systems include the City emergency brake assistant (works up to speed 32), the collision warning system and the gauge assistant. +The collision warner sometimes irritates, because he evaluates many obstacles as "approaching objects". +The remote light assistant works very reliably. +And the intelligent temporegler responds to the traffic sign detection and drops speed when needed. +The full connectivity is available only for the top equipment: 7-inch touchscreen, Navi, app integration and more. +Two USB and one HDMI connectors are under the armrest and are therefore somewhat difficult to reach. +The approximately 29000 euros for the well-equipped top diesel are in order. +Those who do not want to invest so much will receive the petrol from 20000 euros, the diesel from 23000 euros. +The engines meet the Euro 6 emissions standard. +With the HR-V Honda offers a versatile and everyday car. +Airline not liable: fall on passenger bridge +An airline is not liable for the fall of a passenger on the passenger bridge. +The Oberlandesgericht Düsseldorf (Az.: 18 U 124/14). +The plaintiff had broken a knee ligament in the fall. +The accident, however, could have happened anywhere - it was a general risk of life, the court said. +The airline did not have to pay the man any damages. +Illness: when the organiser pays +Sick holidaymakers will only receive money after their journey, if the cause of the illness is undoubtedly found in the hotel. +However, that is only the case when more than ten per cent of guests have been proven to show the same symptoms. +In the negotiated case, a family was badly affected by diarrhoea and vomiting on the second day of their Turkish leave. +She spent almost the entire holiday in the room. +Their illness led the holidaymakers back to a faulty sewage plant, which allegedly polled the seawater. +The family believed the trip was flawed - and sounded against the organizer. +In court, the plaintiffs had no success. +It is true that the water treatment plant was broken. +But the organizer learned about it shortly before the departure of the plaintiffs. +He had to assume until then that the sea water was in order. +So he did not violate his information requirements, according to the ruling. +No contamination has been found in the samples of the water. +The illness of several hotel guests - possibly through contagion among themselves - is part of the general risk of life. +Out of 691 guests, only 38 were sickened. +De Maizière said that after the violence perpetrated by refugees in Würzburg and Ansbach in July, many people were concerned about further attacks. +The state must respond calmly and decisively at the same time to terrorist threats. +What is certain is that our country will not answer the violence of the perpetrators with hatred and division. +We will not give this triumph to the terrorists. +If criminals had to leave the country more quickly, however, it would increase the security and strength of the people's support for refugee policy. +De Maizière intends to implement the proposals until the federal election in 2017. +He also announced a further personnel reinforcement of the security forces,"in mid-four-digit magnitude over several years." +Sympathy for terrorism must be punished again. +Video surveillance is to be improved, and gun law is being amended in such a way as to make it more difficult to buy weapons on the Internet. +The last much-discussed duty of silence for doctors is to be respected, according to de Maizières. +However, he wants to seek solutions in the dialogue with the medical profession on how to reduce the vulnerability of citizens, he said, with a view, for example, to mental discoveries. +In order to counter the radicalisation of refugees, the Minister believes that better social care is needed. +Teachers would have to be better prepared for dealing with traumatised people. +In order to prosecute criminals in specific areas of the Internet (Darknet) de Maizière plans to use covert investigators. +SPD chief Gabriel said: "the SPD is ready to talk about anything that helps to further enhance security." +It is important for the Home Secretary to speak out clearly against action. +"That was a slap in the face for the sharpmakers in the CDU/CSU," Gabriel told the newspapers of the Funke Media Group (Friday). +De Maizière had previously rejected calls from the union after a burqa ban and the abolition of dual nationality. +A general ban on full obfuscation is a constitutional problem. +You cannot ban everything you are opposed to, and I reject the wearing of the burqa. +We can talk about rules such as road transport or witnesses in court. +Green leader Simone Peter accused the minister of trying to simulate new anti-terrorist packages and capacity to act. +Left-wing party chief Bernd Riexinger said: "fleet scraps and a tightening of the right of residence do not bring security to the people of this country." +Better flow of traffic on the motorway +It regularly blew up on the bypass - here's a picture of Nov. +But this is about to change: the legal trajectory is to be extended. +This is good news for all car drivers who are standing in the traffic on the ambient road every evening when travelling via the motorway (A 43). +Road construction is extended next Tuesday and Wednesday (16/17 August) in the area between Hammer Straße and the exit Weseler Straße. +Motorists can then walk directly from the hammer road to the right. +The great advantage: the traffic divides at an early stage, improving the overall flow on the very busy section of the Bundesstraße 51. +The idea with the extended exit had the CDU faction in the district agency of Münster-West. +The road narrowing on the accessory nerves motorists, especially between 5 and 19 pm. +On weekdays, the backlog extends to the bridge over the Albersloher route and sometimes beyond. +The reason is the bottleneck on the B 51 just before the departure of Weseler Straße. +From here, traffic will only be channelled across the motorway bridge. +The second track had to be rebuilt well over three years ago. +The reason: static calculations have shown that the bridge no longer has the required capacity to capture, in particular, heavy goods traffic. +It is not possible to say how long this bottleneck and the associated daily traffic jam will continue. +However, for years to come, the bridge has an official residual use up to 2034. +For the extension of the legal trajectory, the national company has consciously chosen the weaker time in the school holidays because of the risk of disability. +Traffic will pass through the construction site on Tuesday and Wednesday. +Intercultural journey: cultural offers for schools +The international class of the forest school attended the play "The invisible House". +The association Nima's and the boy theater are now planning a music project. +The association Nima's enables young people with migration and refugee backgrounds to visit cultural institutions in Münster. +The "class International" of the Waldschule Kinderhaus has visited an idea of the award-winning piece "The invisible house" of the boy Theatre Münster. +In the context of the "Intercultural journey" initiated by the association Nima's, 19 students between the ages of 11 and 15 attended the staging in the small house. +Since the beginning of the year, the association, which aims at the cultural integration of young people with migrant and refugee backgrounds, offers schools with welcome classes the opportunity to visit cultural institutions in Münster within the framework of this project. +Most of the young people in the class had come to Münster between September 2015 and March 2016, including Afghanistan, Iran, Serbia and Syria, and spoke little German. +Thanks to the choreography, the scenic images and video animations, they were able to follow the course of action, according to the press release of the boy Theatre Münster. +The association Nima's, founded by Dr. Tannaz Westerberg of Sprakel, and the Young Theater will work together in the upcoming season as part of a musical theater project. +From October to December, young people between the ages of 14 and 20 will be given the opportunity to attend professional courses in the fields of singing, dance, spectacle and music. +Offers for children and families in the area of theatre play and theatrical language placement are in the planning. +The project "Intercultural journey" continues. +Given the increased number of refugees, the association expects many classes to participate. +Rain instead of star snuff: hope for weather improvement +The weather caused a stroke in southwest Germany on Friday night, but there is still hope. +The night was ill-suited for clouds and rain to watch the celestial spectacle, said the chairman of Sternwarte Welzheim, Hans-Ulrich Keller, on Friday morning. +Our hope lies on the night of Saturday. +The weather is supposed to be good, then we certainly see a lot of star snuff in the sky. +The stars are Perseids, which, at 216000 kilometers per hour, are among the fastest stars. +They have their name because they seem to come from the constellation of Perseus, which goes up in the northeast. +Relaxing night: tips against sleep disorders +In the evenings you get around forever, at night you are awake and in the morning you can't think of sleep anymore. +That is far from relaxing. +After all, such problems are in good company: according to the Robert Koch Institute, about a quarter of adults have sleep disorders and more than 10% feel their sleep often or permanently as not recovering. +How do sleep problems or sleep disorders occur? +There are several forms of sleep disturbances, and they can cause a variety of causes, says Hans-Günter We, member of the board of the Deutsche Gesellschaft für Schlafforung und Schlafmedizin. +What you mean by this is the insomnie, that is, an insomnia and sleep disorder. +It is precisely the sleep that makes many people feel unsatisfactory or inadequate, says Jens Wagenknecht, a member of the Executive Board in the German Home Medical Association with practice in Lower Saxony. +What is behind sleep disorders? +The causes of sleep disorders are complex. +Behind this can be organic, mental or behavioral factors, but also drugs. +Not infrequently, sleep disorder is an expression of another disease. +"Very early waking up is especially common in a depression," says We. +And it may be that different factors require each other. +For example, if you have a bandwagon, you can be bad, wake up every two to three hours, and perhaps begin to grapple with everyday problems and worries. +That leads to tension, and sleep is no longer possible. +When should you have sleep disturbances to the doctor? +Anyone who does not sleep well over a period of one month in at least three nights a week and is impaired on the day should go to the doctor, advises weed. +The impairment may look very different: one is off, tired, idle, has difficulty with attention and concentration, is easily appealing, has mood swings or physical ailments like stomach or headache. +To ease the sleep disorder, it is important to find out their causes. +Treatment options include behavioral changes, cognitive behavioural therapy or medication - classical sleeping tablets only in exceptional cases and at most for two weeks. +There are hardly any sleep doctors in Germany, says Prof. Ingo Fietze, director of the interdisciplinary dormitory center of the Charité University Medicine Berlin. +That is why, when it comes to sleep problems, you should first contact the doctor. +The can check with investigations whether the problems have a physical cause. +Who should go to the sleep lab, and what happens? +For examinations in the sleep lab, medics advise, for example, on snoring with respirators, on sickle dayfatigue, sleep converters or if you do not find the cause of a sleep disorder, Fietze explains. +You do not really have to prepare for the investigation. +You should spend the day normally. +"Just please do not make a luncheon," says Fietze. +After the swirling, you go to bed at his normal time. +In addition to the electrodes on the body, you wear a nasal glasses, a breast belt and a fan on your finger. +There is also a camera on the ceiling. +How can people get a grip on the problems? +There are quite a lot of screws that can be used for a better sleep. +Weaving counts: regular sleep and uplift times, not too long in bed, do not go to sleep on the day, do not watch TV to sleep, drink alcohol and do not look at the clock at night - then you start counting immediately and that is not conducive at all. +What the jungle camp with missing medals in swimming +Former German swimmer Markus Deibler has spoken on Facebook about the disappointing performance of the DSV team at Olympis. +In December 2014, he first picked up gold at the short-track world championships in Doha, setting his first world record at the same time. +Now the former DSV athlete Markus Deibler has protected himself via Facebook against his ex-teammates in the critique. +"In a country where an Olympic champion gets a € 20,000 premium and a jungle kingdom € 150,000, no one should be surprised about missing medals," the 26-year-old wrote on his Facebook page on Friday. +The support system in swimming is bad, but the doping controls are very good. +This means that we cannot compete with countries that promote a great deal and do not look so closely at the issue of doping, or even do it. +"I am not saying that the controls should be stopped here," he continued. +If he wanted to start a comeback, Deibler would have to be reported nine months before his first start of the National Anti-Doping Agency, Germany (Nada). +That is the way to keep it with countries. +"Anyone who cannot be controlled for a certain period prior to WM/OS by independent controllers of WADA/FINA should not be allowed to participate," asks the pollster, who now runs an ice cream parlour. +Airport: gang of baggage thieves arrested +Professional thieves at Düsseldorf airport +Civil investigators from the Düsseldorf police on Thursday succeeded in arresting two women and two men aged 50 to 61. +The suspects had committed multiple pocket and baggage theft as a gang. +At 9: 30.00 p.m., civilian officials in the Düsseldorf airport recognized a gang that was known to police from past theft offences. +The two women and two men had committed several offences since mid-July of this year, working together, collaboratively and professionally. +The specialists of the Crime Commissioner 34 will be able to demonstrate four actions to the thieves who were specifically responsible for committing crimes to Germany. +They had taken a total of more than EUR 15,000. +Old buildings, some Lindenbäumchen, interspersed with the rest of the cobblestones: the Rigaer Strasse in Berlin-Friedrichshain does not look like this at first sight, but the police are one of the "dangerous places" of the city. +Walk down the road from east to west, passing on playgrounds, a freshly coated kindergarten and a biolad. +To the facade of a grey house someone has sprayed "ugly!" +Compared to a Lidl, which is soon to be demolished, it is already being built: by 2017, a house with high windows and 133 new rental apartments will be created. +Articles about this "trendy district", as the real estate company Friedrichshain called it, are, however, preferred in recent weeks with burning cars. +The reason is the house with the number 94: once it was occupied, now the residents have rental contracts, but on the ground floor are still occupied spaces and are used for events. +Especially the Berlin interior senator Henkel had argued several times since the beginning of the year for tough police action against the project, describing the area as a "no-go zone" for police officers and the 94 as the starting point of autonomous violence. +After being cleared on June 22, the rooms on the ground floor, the cadtery crews, with 300 police officers, patrolled the police for three weeks, with 30 to 40 officials and three team cars on the ground, blocked parts of the road and kept visitors from entering the house with the number 94. +Meanwhile, construction workers renovated the premises on behalf of the unknown homeowners. +On July 13, a Berlin administrative court ruled that the evacuation had been illegal, and a day later, police and construction workers withdrew amid the jubilation of sympathizers and residents. +On this summer afternoon, the road is peaceful: parents walk with children, people sit on the pavement in front of the houses in the sun, others entertain Späti. +In the immediate vicinity of the house projects are a primary school and kindergartens. +Left-wing violence is not the main concern of many residents: Kerstin Neugebauer, who has lived in the Kiez since 1999, and Jana *, who has three children here, are mainly generated by the police presence. +With residents of the home projects, they share the concern about rising rents and gentrification. +It does not sound like a Kiez, who mostly wanted police protection against vandalising leftists. +The ditch of the Berlin interior senator and the police between house occupants and their neighbours does not seem to exist. +Friedrichshain, in the east of Berlin, was actually a traditional working-class district, which today also has a low average income and high risk of poverty compared to the rest of the city. +Home occupation and the resulting residential projects have long been part of the Kiez: in 1990, numerous houses were occupied in the former GDR, including almost all of Mainz Street near the rig. +While the Mainzer had been cleared under great police escort in a veritable street battle, many of the projects in the Rigaer were legalized and are still inhabited by the people who occupied them 26 years ago. +At the same time, in recent years, the district has become increasingly a magnet for tourists and polling liners from all over the world. +That is also evident in the rents, which have risen by nearly 60 percent since 2009 in new rentals. +Many of the new constructions in the Rigaer are attacked as symbols for this development: you can recognize them on wrapped slices or freshly coated facades that have been tossed with color bags. +No other street has been mentioned so often this year along with the words "left-wing violence". +One reason that not all neighbors see this as a problem could be that they are not necessarily affected by crime: crimes such as bodily injury are, according to statistics, almost exclusively against police officers. +Most of the crimes are causing material damage, which tends to hit new buildings and newly renovated houses. +For Kerstin Neugebauer, who has lived for 17 years in a rental house next to the controversial 94, there can be no talk of insecurity. +As far as violence is concerned, it is appeasement: the people in the 94 are their neighbours, who are certainly not. +Even the famous burning cars no longer exist directly in the Rigaer. +For the studied architect, her street is not a criminal focal point, on the contrary: "here you help each other, live together on the street and get more from each other than elsewhere". +Neugebauer is deliberately drawn into the Rigaer street - and stayed. +That is why it was so important for the residents to get their street back: the police, the politics and the media, all of whom suddenly claimed the sovereignty over the district in July. +But in the eyes of residents like Neugebauer, the road continues to be taken away: by faceless new buildings in former construction gaps that crowd out the old inhabitants. +"These are, after all, condominiums that are not interesting to many here - they are more likely to be people who are not so good," she says. +"I absolutely do not approve of violence and destruction." +But what should you do if someone never listens? +There is frustration on all sides, including the police and the inhabitants. +Kerstin Neugebauer, who is annoyed by color bombs, has little understanding: the house projects and the left scene belonged to Kiez. +Anyone who moves should be aware of this - just as someone who moves into a pub district can complain about noise there. +All of the people presented with first names asked not to be named with their proper name +Urbach: Annika Deuschle is new refugee commissioner +Annika Deuschle is the contact person for integration and organizer. +She is also a social worker on the ground. +Since July, Annika Deuschle has been the refugee agency for Urbach. +The social pedagogy supports the management team around Achim Grockenberger. +It sees itself as a contact person for all actors: refugees, refugee aid workers, administration, authorities and anyone else. +Regine's customer from the working group indicates that the volunteers are more than grateful that Deuschle is now there, the ferocious wool mill, which has a particular problem. +For example, some - less spotty than the multitude of desirable tasks - meant that when the administration wanted to put out the job. +The search for an administrative force with a talent for languages and people, coupled with many years of experience in the field of social work, has just been searched. +But administrative work is not their central area, says Annika Deuschle. +Above all, it is about organization, work with people on the ground, and also behind the scenes, as well as network activity. +The 31-year-old has been around for about six weeks. +It has a 50 per cent stake in three years. +"It was high time," says Regine's client, that supports Annika Deuschle's honorary and full-time actors. +There are big and small problems, organizational, human and understanding problems. +New containers will soon be found in Wasenstraße +A serious problem has been for some time to find homes for the connecting refugees who have been recognised. +The local authorities are responsible for the connection. +They have to accommodate the refugees in their own or rented homes. +The costs of building, renting or renovating these accommodations must be borne by the municipalities themselves. +The responsibility changes from the county office to the municipality and the Jobcentre. +Problem: there are free objects, but not every landlord wants to offer their apartment. +The search has been very difficult for some time. +De facto the administration does not find any private housing. +So far, it is not working to rely on private housing, according to Deuschle. +Therefore, public housing needs to be stimulated, as it is so beautiful. +So new containers will soon be set up in Wasenstraße. +But only housing is not done. +Perspective is the key word, Regine customer and Annika Deuschle agree. +In addition to a fixed lead, it is internships, training places, school places, one-euro jobs and aid activities for refugees and migrants that need to be funded or set up. +"More places would be good," says Regine's customer. +Many work in the building yard or help house masters, do nonprofit work - and that is motivated and very properly, as Annika Deuschle reports. +It hopes that work for the community will lead to a positive external impact. +That is ' no employment therapy '. +But activity does not just mean work. +The day needs a fixed structure, say Deuschle and customer. +People would need to develop a sense of belonging. +So there is a need for offers such as sports, contacts with locals and, above all, language courses. +Professional courses are rare. +So here, too, administration and honorary officials are jumping in. +It is vital that the refugees feel that they are welcome and welcome in Germany. +The long duration of the procedures is a problem. +They must explain to refugees that it is taking time to bridge the gap, for example, with language courses. +Anyone who eventually feels that he is unable to help anyone in Urbach should not be able to work and be useless, who will never integrate. +The clear majority is motivated. +However, there are also problems, says the customer,"people who have nothing at all", so the work of the Deuschle and the customer is always to motivate others. +All of this is a "mammoth task". +A difficult question: have the two, following recent events, been afraid of radicalisation, even in a small community like Urbach? +"No," Regine tells customers quite clearly,"what some might call naive". +The helpers, however, are already sensitized. +These incidents are also a matter for the refugees. +They would have the fear that the perpetrators would bring them completely into disrepute. +"They want to show they have nothing to do with it," says Regine's customer. +Many would like to stay in Urbach. +So principal and honorary officials must look for activities on the ground and in the region. +They always have in the background that a new surge of refugees and migrants could soon come to Urbach. +Does Germany need a cap? +To answer this question clearly is to shy away from politics. +Actually, it is unfair to put them on the ground. +"In Urbach we have not arrived yet where we want to go," says Annika Deuschle. +No new refugees, that would relax the situation. +Regine's customer also makes it clear that the Urbachers are already busy integrating the existing people in a reasonable way. +These are currently about 100 people, mostly young men. +But if people are in need, they need help, both women agree. +The political situation is so complicated, there are no easy answers. +Schorndorf: burglars sought by helicopter +The police helicopter flew various areas for about an hour - unsuccessfully. +Two unknown men intruded violently into an apartment at 8.50 a.m. on Friday morning in a multi-family house in the Lindenweg. +The resident surprised the two and struck the unholed in the escape. +The two men were about 1.65 to 1.70 meters tall, probably masked, wore both bluejeans and black capuzenpullis. +They flew in the direction of downtown. +To the search, police deployed several strip crews as well as a police helicopter. +The search was carried out without success. +Perhaps the unknowns fell close to the apartment or in their escape. +Baden-Wuerttemberg: police determine after rocker attack on snack +After an attack on an Ulmer snack, police are investigating six suspects from the rocker milieu because of heavy land peace. +In housing searches, evidence and drugs were secured, police said Friday. +Around 20 masked men of a rocket-like grouping had thrown bottles and stones against the window of a snack, according to police in July. +After that, they were alleged to have attacked two guests and injured one slightly. +After that, they fled. +At the snack and the adjacent building there was a damage of € 10000. +According to investigators, there is a dispute in the Ulmer Rocker milieu between a Kurdish and a Turkish aisle. +Thuringia: Zeiss Meditec closer to turnover billion +A high demand for medical technology in Asia has boosted sales of Carl Zeiss Meditec. +In the first nine months of the fiscal year that began in October, group sales rose 6.7 percent to $798.6 million, as the listed company said Friday in Jena. +The Asian business grew disproportionately by 17.1 percent. +Profit before interest and taxes increased to 110.5 million euros, according to the interim review of 89.5 million euros. +The Jenaer Medical Technology Group aims to exceed the sales mark of one billion euros this fiscal year, the board confirmed. +Zeiss Meditec manufactures equipment and equipment for medical practices and clinics. +The company, which belongs to the optics and electronics company Carl Zeiss (Oberkochen), employs just under 3000 people. diff --git a/mitigating_bias/train/BERTScore/bert_score/example/refs.txt b/mitigating_bias/train/BERTScore/bert_score/example/refs.txt new file mode 100644 index 0000000..b29adc7 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/example/refs.txt @@ -0,0 +1,10 @@ +28-Year-Old Chef Found Dead at San Francisco Mall +A 28-year-old chef who had recently moved to San Francisco was found dead in the stairwell of a local mall this week. +But the victim's brother says he can't think of anyone who would want to hurt him, saying, "Things were finally going well for him." +The body found at the Westfield Mall Wednesday morning was identified as 28-year-old San Francisco resident Frank Galicia, the San Francisco Medical Examiner's Office said. +The San Francisco Police Department said the death was ruled a homicide and an investigation is ongoing. +The victim's brother, Louis Galicia, told ABC station KGO in San Francisco that Frank, previously a line cook in Boston, had landed his dream job as line chef at San Francisco's Sons & Daughters restaurant six months ago. +A spokesperson for Sons & Daughters said they were "shocked and devastated" by his death. +"We are a small team that operates like a close knit family and he will be dearly missed," the spokesperson said. +Our thoughts and condolences are with Frank's family and friends at this difficult time. +Louis Galicia said Frank initially stayed in hostels, but recently, "Things were finally going well for him." diff --git a/mitigating_bias/train/BERTScore/bert_score/example/refs2.txt b/mitigating_bias/train/BERTScore/bert_score/example/refs2.txt new file mode 100644 index 0000000..f454fd6 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/example/refs2.txt @@ -0,0 +1,10 @@ +A 28-year-old chef who had recently moved to San Francisco was found dead in the stairwell of a local mall this week. +28-Year-Old Chef Found Dead at San Francisco Mall. +But the victim's brother says he can't think of anyone who would want to hurt him, saying +The body found at the Westfield Mall Wednesday morning was identified as 28-year-old San Francisco resident, Frank Galicia, the San Francisco Medical Examiner's Office said. +The San Francisco Police Department said the death was ruled a homicide and an investigation is ongoing. +The victim's brother, Louis Galicia, told ABC station KGO in San Francisco that Frank, previously a line cook in Boston, had landed his dream job as line chef at San Francisco's Sons & Daughters restaurant six months ago. +A spokesperson for Sons & Daughters said that they were "shocked and devastated" by his death. +"We are a small team that operates like a close-knit family and he will be dearly missed," the spokesperson said. +Our thoughts and condolences are with Frank's family and friends at this tough time. +Louis Galicia said Frank initially stayed in hostels, but recently, "Things were eventually going well for him." diff --git a/mitigating_bias/train/BERTScore/bert_score/example/refs_long.txt b/mitigating_bias/train/BERTScore/bert_score/example/refs_long.txt new file mode 100644 index 0000000..900f0fa --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/example/refs_long.txt @@ -0,0 +1,3004 @@ +28-Year-Old Chef Found Dead at San Francisco Mall +A 28-year-old chef who had recently moved to San Francisco was found dead in the stairwell of a local mall this week. +But the victim's brother says he can't think of anyone who would want to hurt him, saying, "Things were finally going well for him." +The body found at the Westfield Mall Wednesday morning was identified as 28-year-old San Francisco resident Frank Galicia, the San Francisco Medical Examiner's Office said. +The San Francisco Police Department said the death was ruled a homicide and an investigation is ongoing. +The victim's brother, Louis Galicia, told ABC station KGO in San Francisco that Frank, previously a line cook in Boston, had landed his dream job as line chef at San Francisco's Sons & Daughters restaurant six months ago. +A spokesperson for Sons & Daughters said they were "shocked and devastated" by his death. +"We are a small team that operates like a close knit family and he will be dearly missed," the spokesperson said. +Our thoughts and condolences are with Frank's family and friends at this difficult time. +Louis Galicia said Frank initially stayed in hostels, but recently, "Things were finally going well for him." +"He found an apartment, he was dating a girl," Louis Galicia told KGO. +Louis Galicia said he could not think of anyone who would want to hurt his younger brother. +He was a kind spirit with a big heart. +His way of connecting with the family was always making us a dish, making us dinner," Louis Galicia said. +He never wanted to be in any kind of altercation. +He was the brother that went with the flow. +"With everything else that's going wrong with the world, he was that diamond in the rough that was shining bright every day," he said. +Anyone with information is asked to call the SFPD Tip Line at 415-575-4444. +Jennifer Aniston: I'm always pigeonholed +Jennifer Aniston need not always be perfect or successful. +That is what the Hollywood star has made abundantly clear in an interview. +"I'm always pigeonholed, or labelled by someone who has little, if anything, to do with me and reality." +"Personally, I have no desire to be perfect and successful all the time." +"To be honest, I don't really give a damn about things like that." +Jennifer Aniston (47) can only laugh that she has been dubbed "Miss Perfect" in the current issue of "Cosmopolitan". +The actress prefers to spend her time at home in front of the television with her hair in a relaxed bun, eating Mexican food, the magazine reports. +The question of whether she wants children makes her livid: "We women do not need to be married or have children to feel fulfilled," the Hollywood star says. +In her new film, "Mother's Day - love isn't child's play", Aniston stars as a single mother with two sons. +The film is released in Germany on 25 August. +Golfer Langer is awarded the Sport Pyramid +His experience on horseback is negligible. +At the end of a golfing tournament in South Africa, Bernhard Langer and a colleague went for a ride along the beach for a bit of fun. +It was a first for the 58-year-old. +CHIO: "Golden Sport Pyramid" for Bernhard Langer +After a few minutes, the horse decided it wanted to go home, and raced back to its feeding trough at full tilt. +After a kilometre at this speed I was scared. +"It wasn't a good experience," said Langer. +And with that, his riding career came to an end again. +On Saturday, Germany's best golfer of all time - with 101 tournament wins under his belt - was once again near horses. +He and his family toured the ALRV grounds, but he did not jump onto a horse for a photo. +It was Langer's first time in Aachen, and at CHIO. +He had been thoroughly convinced. +The German Sport Aid foundation awarded the man from Anhausen with the Golden Sport Pyramid at a small gala event. +The friendly sportsman is not lacking for awards. +The Federal Cross of Merit, the Silver Laurel Leaf, Champions Tour Player of the Year... +Even the British Queen has bestowed an honour upon him. +Langer is the 18th person to be awarded the Sport Pyramid. +On Saturday, he met the first person to receive it, Hans Günter Winkler, in Aachen. +"This award means a lot to me," said Langer, "because it's not just given for sporting success, but also for social commitment." +Langer has been encouraging up-and-coming talent for years. +And in this vein, he passed the prize money of 25,000 euros on straight away. +The two-time US master's champion was inaugurated into the "Hall of Fame for German Sport" on Saturday, along with 15 other outstanding sportspeople. +Those given the award include track athletes Hartwig Gauder and Harald Schmitt, gymnast Eberhard Gienger, fencers Cornelia Hanisch, Alexander Putsch and Arnd Schmitt, rower Peter-Michael Kolbe, bob-sleigh rider Meinhard Nehmer, judo player Frank Wieneke, show-jumper Alwin Schockemöhle, and, posthumously, handball player Erhard Wunderlich. +Many of these sport legends came to Aachen on Saturday. +After the official part, the illustrious gathering wandered to the show-jumping stadium, where the Lavazza Prize was underway. +Bernhard Langer kept his distance from the large animals. +Comparing Clinton's and Trump's economic policies: It's all about the money +Both Clinton and Trump want to invest in infrastructure and prevent the TTP trade agreement. +But the two candidates for the US presidency disagree on taxes and energy policies, as well as on one fundamental issue. +There is a fundamental philosophical reason for the differences between Donald Trump's and Hillary Clinton's economic policies. +This is the role of the state. +If in doubt, Trump wants the state's role to be minor, and warns of how the state can damage the economy with taxes and regulations. +Clinton wants to lead the economy to its death and regulate it to its death, he says. +He would do things totally differently, Trump says. +He would repeal regulations, and lead a wide-reaching tax reform with low rates for private individuals and companies. +Conversely, Clinton says that the state has particular tasks to fulfil, giving disadvantaged people opportunities - and it needs money to do so. +This would increase taxes for the rich, she says. +Interestingly, they have similar views on infrastructure. +There has to be investment in infrastructure, Trump and Clinton say almost verbatim. +The Democratic candidate has even announced the largest investment in jobs since the Second World War. +State programs investing in infrastructure are classic Democrat policies, and are rejected by the tea party wing of the Republican party, which is critical of the state. +Consequently, Trump could lead to discussions within the party. +There are clearer differences to be seen in terms of energy and climate policies. +Trump wants to build coal-fired power stations and bring coal production in the USA back up. +Drilling for oil should be permitted in protected areas, and he wants to withdraw from the Paris Climate Change Treaty. +On the other hand, Clinton wants to use her investment program to extend renewable energies, saying: "One country will become the superpower of renewable energies, and create millions of jobs." +"It will either be China, Germany or America - and I want it to be us." +But it's not just infrastructure that sees the two candidates taking a rather similar stance - they agree in terms of international trade agreements as well. +Neither want to sign TTP, the trans-Pacific trade agreement. +At the same time, neither want to cut the USA off from international trade - they just want to protect American jobs better. +They should then also be better paid, Clinton demands. +The current minimum wage of 7.25 US dollars is a pittance, she says. +She wants to raise it to 15 dollars an hour. +It is not quite clear what Trump wants to do on this score: Once he said that the minimum wage had to be raised, then he said it should stay the same. +But the big discussion of the months to come will likely revolve around both parties' tax policies. +Trump is on one side, wanting to relieve the burden on the economy and citizens to boost growth. +His critics state that this will just increase the budgetary deficit. +Clinton is on the opposite side: as a minimum, she wants the rich to pay more taxes, and her critics say that more taxes are not the solution either. +Seeking refuge: "Every refugee woman has dealt with sexual violence" +For women fleeing a country on their own, sexual violence is almost part of daily life. +When they arrive in Germany, they are often traumatised. +One house offers refuge. +Four women are sitting in a large kitchen. +Every one of them has a baby with them, the oldest of which is one year old. +One woman holds her little son in her arms. +He looks around the room inquisitively, his eyes wide. +His mother stares at the tabletop. +Until she realises she's being watched. +She smiles briefly and kisses the child. +The scene looks normal. +Until you start talking to Katrin Bahr. +She is the field manager for Condrobs, a provider of social assistance within Bavaria. One of the issues she deals with is refugee women. +The four women in the kitchen are refugees. +They live in the north of Munich, in one of the few decentralised accommodation centres in Bavaria for refugee women and their children who have made the journey alone. +Condrobs opened the centre in January, in collaboration with Pro Familia and the Munich Women's Help organisation. +It recently had its official opening. +60 people live there - around 40 women and 20 children. +There are no men - not even male visitors. +The exception is a bodyguard on the door. +"I'm not exaggerating when I say that every woman who arrives here has dealt with sexual violence on her way to find refuge," said Bahr. +"Men flee because of war, because they are politically persecuted, because they are threatened with torture or death, or because their families pin their hopes on them and send them to Europe," she explains. +When women flee, other reasons are in the foreground: "Many women sneak away secretly, because they see no other way out". +In their home countries, they experienced sexual violence, forced marriage, honour killings, slavery or forced prostitution. +That propels them forward. +And it continues even while they're on the run. +"It is not a rare occurrence that traffickers request a sexual act in exchange for a bottle of water, for example," says Bahr. +And the woman are alone, unprotected by their families. +If you think that this stops as soon as they arrive in Germany, you'd be wrong, says Bahr. +Even in Germany, lone women are often seen as inferior in refugee accommodation, and, in the worst cases, they are abused. +As a result, around 90 percent of the women living in accommodation in the north of Munich are traumatised, she estimates. +"Some of the children were certainly not conceived with the woman's consent". +Many women are so used to it that they do not say anything, she says. +"Or they can't bring themselves to talk about what they experienced because they are too ashamed". +Because they often don't know how to get help, there needs to be more accommodation just for them, says Bahr. +In Bavaria, the seven district governments are responsible for providing accommodation for refugees. +When asked if they knew of projects like the one in Munich operating within the areas they covered, some answered with "no". +In Upper Palatinate and Upper Franconia regions, for example, there is no similar accommodation offered by the government. +Even in Swabia, women who come as lone refugees are not given separate accommodation, says Karl-Heinz Meyer, press spokesperson for the region. +In Upper Bavaria, Lower Franconia and Middle Franconia, floors, or individual houses, are set aside in some shared accommodation for lone women and their children. +The exception is Lower Bavaria: there, there are two central accommodation centres exclusively for women. +Even the European Parliament's Committee on "Women's Rights and Gender Equality" stresses that women must be provided with accommodation separate from that of the men. +In a study published on behalf of the Committee, it was stated that "it is very important that men and women are given separate accommodation." +"If there is a lack of private space, or if men and women are provided with accommodation together, this can result in (perpetual) violence against women". +Washing facilities, above all, should be separate, and easily accessible for women, according to the study. +The extent to which women need this protection can be seen in the sheer number of people interested in the house in Munich. +"Since word has got around that we exist, we have developed a long waiting list," says Bahr. +It would be easy to open a second house. +Junior doctors strike: Calls for fresh industrial action +Representatives of junior doctors have called on their union to authorise fresh industrial action in their dispute about a new contract. +The Junior Doctors Committee (JDC) of the British Medical Association (BMA) is to ask its full council to back more industrial action from early September. +The JDC says ministers have failed to address concerns about the contract. +Junior doctors and medical students voted in July to reject a contract deal agreed with the BMA. +It was rejected by 58% of its members who voted in the ballot. +In a letter to members released on Twitter on Thursday night, the JDC's chair Ellen McCourt said the government had remained "persistently silent" on issues which, she said, had resulted in the contract being rejected. +She said: "In light of this, the JDC Executive has voted to reject the proposed new contract in full and to call for formal re-negotiations on all of your concerns." +In response to the government's silence, JDC exec has today made a formal request for a special meeting of BMA Council to authorise a rolling programme of escalated industrial action beginning in early September. +The dispute has led to junior doctors taking part in six strikes this year, including the first all-out stoppages in the history of the NHS. +The BMA's junior doctor leader, Dr Johann Malawana, resigned following the vote to reject the negotiated terms of the contract, which the BMA had recommended. +He had told BMA members the deal was a good one that should be accepted, during meetings ahead of the poll of 54,000 junior doctors and medical students. +Following the vote, Health Secretary Jeremy Hunt said the contract would be imposed on medics in England. +Russia and Turkey: An 'alliance of misfits'? +It was a gesture that ended a crisis. +The leaders of Russia and Turkey met on Tuesday to shake hands and declare a formal end to an eight-month long war of words and economic sanctions. +But, as Vladimir Putin greeted his Turkish counterpart in the gilded hall of a St. Petersburg palace, I got the distinct impression that Ankara wants this reconciliation the most. +There was the handshake, yes. +But Mr Putin's smile looked thin and he was hardly oozing warmth even by his own restrained standards. +Recep Tayyip Erdogan by contrast talked repeatedly of his "dear friend" Mr Putin - five times, according to one report. +I lost count. +He also pledged that relations with Russia would return not just to their pre-crisis level, but even higher. +The next day one newspaper here described Mr Erdogan as acting as if nothing bad had ever happened. +To me, his enthusiasm implied the opposite. +But a lingering coolness emanating from Mr Putin showed that Russia's leader has forgotten nothing. +In fact, the cause of the crisis was the first thing he mentioned in his opening comments: Turkey's shooting down of a Russian fighter plane on the Syrian border. +Moscow's reaction at the time was furious. +Mr Putin lashed out, accusing Ankara of stabbing Moscow in the back. +The offence was even greater, coming from a supposed friend. +Rebuilding real trust will be hard, perhaps impossible. +Russian public opinion has also turned since November. +For months, state-controlled media conducted a staggering, all-out offensive against Ankara. +All of a sudden, it seemed like Turks were to blame for everything. +Most serious were accusations from top officials that Mr Erdogan's own family has profited from an illegal trade in oil from areas of Syria controlled by the so-called Islamic State. +He's denied that emphatically. +But in St. Petersburg came the official message that it's time to move on. +After all, this meeting only happened because Mr Putin got the apology he demanded from President Erdogan. +Russia could claim a victory of sorts. +For Ankara the benefits of calling a truce are clear. +First and foremost, Erdogan needs all the friends he can get after he was nearly ousted from power last month in a failed coup. +Repeat terror attacks on Turkey have clearly shaken him too. +There is also an economic motive. +Russian sanctions have hit hard - particularly the ban on charter flights, which usually carry several million Russian tourists to the Turkish coast each year. +The number has slumped by almost 90%. +As for Russia, tour operators and charter companies here will certainly be relieved when flights eventually resume. +They're banking on a late-season rush to the Mediterranean. +And even this week, state TV has been predicting cheaper fruit and vegetables once Turkish agricultural imports are permitted again. +"Tourists that way, tomatoes back here," as a report in Vedemosti newspaper phrased it. +But the visit also had additional political value for Moscow. +Ankara is angry with the West for what it considers a weak response to the attempted takeover. +Add to that its long-standing grudge at the snail's pace of talks to join the EU and step in Mr Putin - who is keen to capitalise on the chill and chip away at Turkey's ties with the West. +The Russian leader certainly won bonus points with Ankara for calling in support of the elected authorities after the attempted coup. +Mind you, that's a given for Moscow which has its own deep-seated fear of regime change. +So the summit at this glitzy, seaside palace allowed Russia and Turkey to present what one analyst described to me as an "alliance of misfits": two countries that feel rejected and mistreated by the West, joining forces. +Still, despite the public display of reconciliation, the two still have major differences. +The key one is Syria, where Moscow has recently been casting itself as peacemaker but where Russia and Turkey back opposite sides. +It could be telling that after almost three hours of initial talks, the two presidents told a press conference that they hadn't even touched on the topic. +Turkey's president deliberately avoided answering a question on their differences, while Mr Putin chose to underline them. +There is no clear consensus on where they can seek common ground on Syria. +But after months of open hostility - and given the potential for utter disaster when Nato member Turkey shot down that Russian fighter jet - it is surely better that the two leaders are at least talking again. +Royal Bank of Scotland to disappear for customers outside Scotland +The brand RBS is to be reduced to a back office role, according to the bank's chief executive. +Royal Bank of Scotland will disappear for customers outside Scotland. +Ross McEwan told BBC Scotland that the RBS brand was associated with the bank's global ambitions. +It has retreated from them since it nearly collapsed eight years ago and had to be bailed out. +During that time, brand strategists have used 'RBS' to protect other consumer finance brands. +It was backed with millions of pounds in sponsorship of international sport, from Six Nations rugby to Wimbledon champion Andy Murray. +But now, it has been judged right to let more national brands come to the fore. +Royal Bank of Scotland will be used with Scottish customers, but will not be initialised. +In England and Wales, all RBS references, outside head office and the stock exchange listing, will be changed to NatWest. +The Ulster Bank brand is already used for customers in the Republic of Ireland and Northern Ireland. +There are other, smaller brands for private banking, which will get more prominence - Coutts, Adam & Co, Drummond, and Holt's Military Bank. +Mr McEwan was interviewed during a tour of customers and staff in Inverness-shire. +He told BBC Scotland: "The RBS brand will end up becoming our investor brand and the one that our staff are employed with, because we are now becoming much more a bank of brands." +As the bank itself became a global brand, RBS became the global brand. +I'm now saying we no longer have global aspirations, we have local aspirations. +Each one of those brands will stand for something quite different in their own communities, and our staff will work with customers under those brands. +RBS had already stated that it would not to continue its Six Nations sponsorship, and it has been raising the profile of different brands in its sports sponsorship. +"The time is right for us to move to the bank of brands, because underneath (we've been asking) how do we focus on making this a better bank for customers?" said the chief executive. +It would have been very cynical three years ago if we'd said we're going to be a great bank for customers and put those brands out there. +But with the work we've been doing, focussing on the customers needs, not our own, I think you're seeing a lot of change. +We can bring those brands back up again, so I think the time is right. +Frankie Dettori reaches 3,000 winners with victory at Newmarket on Predilection +Dettori sprays champagne after a double at Newmarket takes him to 3,000 wins +Jockey Frankie Dettori secured his 3,000th British winner at Newmarket on Friday. +He brought up the landmark with his second winner of the night at his local track - on Predilection, trained by John Gosden. +The 45-year-old Italian is the sixth jockey to reach the landmark in Flat racing. +He follows Sir Gordon Richards, Doug Smith, Lester Piggott, Pat Eddery and Willie Carson. +Three-time champion jockey Dettori, who earlier won on Ghayyar, said: "It's special." +I'm very emotional because my family are here as well +I'm very pleased for it to have happened at Newmarket because this is where I landed 30 years ago. +It's not a big meeting, it's not a Royal Ascot - it's a mundane Friday night with 20,000 people. +I'm relieved and very humble. +Dettori soaks up the cheers as he brings in Predilection after victory +Two jockeys have reached the milestone in jump racing - champion jockey Richard Johnson and retired 20-time champion Sir Anthony McCoy, who had more than 4,300 victories in a record-breaking career. +Lester Piggott, nine-time Derby winner, 4,493 career wins +Frankie is one of the best jockeys of the modern era and it is no surprise he has reached this landmark so few have achieved before him. +He is stylish and strong, but it is his tactical nous that sets him apart from others in the weighing room. +He is a fantastic ambassador for racing, his enthusiasm and charisma have been drawing fans to the sport for years. +I said to Frankie a few weeks ago at Epsom he'd have ridden 6,000 winners if he wasn't just a weekend and big-race jockey! +Seriously though, Frankie's been riding winners in the UK for the best part of 30 years which is great to see. +He's a lively character which is good for British racing but more than that, he's an incredible jockey. +Frankie Dettori celebrated the milestone with a trademark flying dismount +From flying finishes to flying dismounts, Frankie Dettori has been the poster boy of British Flat racing for two decades. +It has been a rollercoaster ride. +Stacks of big-race winners, including his famous 1996 'Magnificent Seven' at Ascot, but he also survived a plane crash and served a drugs ban. +Three years ago he initially struggled when returning from that six-month suspension, but he showed formidable strength of character to defy the doubters and return to his best. +And he may not be done for some time - Dettori has previously said he would like to carry on competing until the age of 50, at least. +Russia's Putin sacks chief of staff Sergei Ivanov +Russian President Vladimir Putin has unexpectedly dismissed his chief of staff Sergei Ivanov. +Mr Ivanov has been part of Mr Putin's trusted inner circle for many years. +The 63-year-old has now been made a special representative for environmental and transport issues. +A statement from the Kremlin said that Mr Putin had "decreed to relieve Ivanov of his duties as head of the Russian presidential administration," but gave no reason. +Mr Ivanov's deputy since 2012, Anton Vaino, has been appointed as his successor. +Mr Vaino, 44, is a former diplomat. +Born in the Estonian capital Tallinn in 1972, he graduated from the prestigious Moscow State Institute of International Relations (MGIMO) and served in the Tokyo embassy. +Later he managed presidential protocol and government staff, the Kremlin website says (in Russian). +On being appointed, he told Mr Putin: "Thank you for your trust." +I think the administration's most important task is to support your activity as head of state in terms of drafting laws and control over how your instructions are implemented. +Mr Putin told a Russian TV station on Friday that Mr Ivanov had asked to leave the post, and recommended that Mr Vaino should replace him. +Do the smiles convince? +This is a move that has mystified Moscow. +Sergei Ivanov has long been one of Vladimir Putin's closest allies and, like him, served in the Soviet security service, the KGB. +As chief of staff he was one of the most powerful men in the country. +In a meeting with President Putin shown on state television both men claimed that the chief of staff was stepping down at his own request. +But despite the smiles for the cameras, few here are convinced - especially now, just before parliamentary elections. +So is this the fall-out from some kind of power struggle? +No-one knows yet. +But the official claim - that a man once touted as a potential president, suddenly wanted to run Russia's environmental policy - has been met with great scepticism. +In remarks to Mr Putin, quoted on the Kremlin website, Mr Ivanov said "it's true that in early 2012 I asked you, in a conversation, to entrust me with this very complicated post, even - you could say - troublesome post, for four years. +Well, it turns out that I've been presidential chief of staff for four years and eight months. +Mr Ivanov took up the post in December 2011. +He served previously as a deputy prime minister and defence minister. +He is a member of the Russian Security Council and a former member of the KGB state security service, like Mr Putin. +In the late 1990s, when Mr Putin was head of the Federal Security Service (FSB), which replaced the KGB, Mr Ivanov was appointed as his deputy. +When Mr Putin came to power, he named Mr Ivanov as one of the five people he trusted most. +It was once thought that Mr Ivanov might become president of Russia after Mr Putin's second term, as a third term for Mr Putin would have been unconstitutional. +But that post was taken by another close Putin ally, Dmitry Medvedev. +Mr Putin became prime minister, before returning to the presidency just three-and-a-half years later. +Criminal Minds star Thomas Gibson sacked after hitting producer +Gibson was involved in a physical altercation on the set of the show in Los Angeles last month. +ABC Studios and CBS Television Studios, which produce the series, announced his dismissal in a joint statement. +Gibson, who played Special Agent Aaron Hotchner, issued an apology on Thursday before his termination was announced. +There were creative differences on the set and a disagreement. +I regret that it occurred," he said in a statement. +Details on how Gibson's character will be written out of the show, which follows a team of FBI agents, is expected to come at a later date, according to the ABC Studios and CBS Television Studios statement. +The 54-year-old, who previously starred on the sitcom Dharma & Greg, had been on the show since its first season in 2005. +"I love Criminal Minds and have put my heart and soul into it for the last twelve years," Gibson said in a statement released on Friday. +I had hoped to see it through to the end, but that won't be possible now. +I would just like to say thank you to the writers, producers, actors, our amazing crew, and, most importantly, the best fans that a show could ever hope to have. +The show is slated to return for its twelfth season on 28 September. +Mystery as fish land in Banff garden +A Banff man has appealed for help in identifying fish that have appeared in his garden in Banff. +Kevin Bain thinks the 75 fish could be sand eels deposited by a waterspout. +Mr Bain, who lives about 500m from the sea, posted footage of the spectacle on Periscope in the hope someone could shed light on the appearance of the two-inch fish. +Queensferry Crossing: Bridge now connected to Fife +The £1.35bn project is now due to be complete by May 2017 +Engineers have joined the Queensferry Crossing's north deck and viaduct - meaning the bridge is now connected to Fife. +It is the first of four closures between the "deck fans," which are now nearing completion around each of the bridge's three towers. +The bridge section from Fife is now 600 metres long and weighs 30,000 tonnes. +It has 10,000 tonnes of steel and 20,000 tonnes of concrete and 46 stay-cables. +The £1.35bn project is now due to be complete by May 2017. +Economy Secretary Keith Brown visited the site today and was among the first to walk from the land on to the bridge. +He said: "This is a historic and symbolic moment in the building of the Queensferry Crossing. +We're all witnessing engineering on a truly epic scale on this project, with over 30,000 tonnes of concrete and steel used just to build this part of the bridge. +Despite the massive size and weight of the bridge completing the closure between the viaduct and bridge deck is a delicate operation involving extremely precise tolerances for fit up. +Overall, nearly 79% of the total bridge deck is now in place, the final section of deck is having its concrete deck cast in Rosyth today, meaning all the deck is ready to be lifted into place on the bridge. +Michael Martin, Forth Crossing Bridge Constructors project director said: "The first closure on any bridge project is always a significant milestone. +On this fantastic project, this closure represents leading edge civil engineering. +After installing the last road deck section and connecting it to the expanding North Tower road deck, we then had to close the remaining gap on the north - or landward - side. +This was done by pulling the northern approach viaduct 700 millimetres southwards. +This was a massive and, at the same time, very delicate operation. +Massive because the viaduct is 222 metres long, weighs approximately 6,000 tonnes and had to be pulled up a gradient of about 3%. +Delicate because the tolerances the team were working to were tiny - just a few millimetres either way. +Happily, it all went very well. +Moelfre Bay rescue: Three men are 'lucky to be alive' +Three men are "lucky to be alive" after they were thrown from their fishing boat off Anglesey. +Moelfre RNLI lifeboat station raised the alarm at 13:20 BST on Friday after a crew saw the incident unfold in Moelfre Bay. +The three men struggled to swim to safety while their boat continued under its own power. +"We saw their boat circling close to them and imagined the worst," said Moelfre lifeboat helm Vince Jones. +"Fortunately, by the time we had launched, the strong winds had blown it clear of them," he added. +Two of the men were rescued by a local fishing boat, while the third man, aged 60, was found exhausted and clinging to a buoy without a lifejacket. +They were all taken on board the inshore lifeboat and brought back to the lifeboat station +Mr Jones said: "The three men thrown in the water are lucky to be alive and completely uninjured. +The boat's engine had an emergency kill cord but it had somehow come detached from the person driving the boat when it capsized. +Someone was watching over these guys today. +Seriously injured - man stabs his ex-girlfriend +A man has attacked his ex-girlfriend with a knife in Hamburg's Harburg district, and seriously injured her. +As the police reported yesterday, the 50-year-old had got the key to the apartment so he could collect his personal belongings. +Instead, the drunk attacker sliced up his ex-girlfriend's clothes. +When she came home, he stabbed her twice. +The 44-year-old suffered injuries to her hand and body. +The police managed to arrest the perpetrator. +While the 50-year-old man was destroying his ex-girlfriend's clothing, he called his mother. +She then called his sister. +The 45-year-old and her partner wanted to calm down her brother. +However, she couldn't get him to leave the apartment. +Consequently, she set off from home with her partner. +They met the man's ex-partner in the street. +As the two women entered the apartment, the 50-year-old pushed his sister to one side, and attacked his ex-girlfriend. +Who is going to build Braunschweig's low-cost housing? +The SPD and the Greens think that investors should step up to the plate much more in the future. +How to react to the bad news that Braunschweig will lose almost 1300 low-cost homes over the next few years? +At the next council meeting, the SPD is going to put forward an "action plan for homes". +But it won't be smooth sailing. +Firstly, there is the question of who is actually going to build the low-cost homes? +So far, no settlement has been reached on this point. +SPD group chairman, Christoph Bratmann, says: "We agree with the Greens: if you want to build on municipal land, you will have to designate 20 percent of all homes as social housing in the future." +The low-cost homes could also be older homes that are renovated. +However, the main issue for the council, according to Bratmann: "How do we handle investors who want to build on private ground?" +We want investors building on those spaces to keep at least 10 percent, but if possible, 20 percent, of homes as social housing." +A new municipal programme to promote the construction of homes, which will cost millions, and which still needs to be financed, will trigger concerns. +The problem, according to Bratmann: "At the moment, there is no agreement between groups." +The CDU wants to put as few rules on investors as possible. +The Left wants more stringent requirements to be imposed on investors. +Despite that, according to Bratman, the situation in terms of the housing market is also hotting up. +If the action plan is implemented, the building authorities will be faced with additional tasks. +More staff will be needed. +It is not clear if we will get the specialist staff. +But the program is not quite complete: because the approximately 1260 new homes are to be built anyway. +But how do you balance out the loss of an additional 1300 low-cost homes (approximately), the grants for which will run out over the next few years? +This will come to 500 homes even by 2020. +To prevent this, according to Nicole Palm, spokeswoman for planning policy, bonds that are about to mature should be purchased by the municipality. +In addition, thought must be given to putting homes back into a price maintenance scenario. +This is possible in the west of the city. +The problem could be solved in one fell swoop. +This is because deadlines expire at the end of the year in the west of the city. +Around 1800 homes could then be moved into the managed price scheme for affordable housing. +The only problem is that their owners, housing companies, are against it. +This would dramatically increase the amount of affordable housing in the west of the city, taking a step back from the target of "blending". +No longer are socially disadvantaged people to be concentrated in a small number of districts. +The Greens think there's still room for manoeuvre in the discussions. +Group chairman Holger Herlitschke thinks that "the CDU will have to get into bed with us to reach a decent majority." +However, they have focused on providing more building sites for detached homes. +But that does not mean that it will be impossible to reach a compromise. +Pokémon Go a worthy hunt for health and happiness +It is fascinating to see how the world turns. +That teenagers and children do not get outside to play any more, preferring to spend their free time looking at screens, has been the lament of many for the the past decade. +Pokemon Go is getting people off the couch and into some activity. +Screen time was initially limited to the television then video games and more recently smartphones. +So it is great to see that technology and being active outdoors are not mutually exclusive. +I am of course referring to the craze that is Pokémon Go, an app based on the characters first created for video games in the 1990s (it later spawned a cartoon series, playing cards and other spin offs). +Like many pop cultural phenomena it had gone off the boil somewhat before this new game was made available in the US, Australia and New Zealand in early July. +The launch in other countries was then delayed by the massive response, which overloaded servers. +Within days, Pokémon Go had more users than Tinder and nearly as many as Twitter. +So how does it work? +In a nutshell, players on smartphones go out looking for Pokémons, which are tracked with a GPS and, once found, can be 'photographed' (via a screenshot on your phone) or 'captured'. +A generation who played the game when younger have joined the craze, jumping off the couch for the search. +In the US, the game has led to a significant increase in the number of steps taken by the "average" person each day. +Cardiogram, an app for the Apple Watch that tracks 35,000 users, told the Washington Post recently that within two days of the game launching, the number of people it tracked who did 30 minutes of exercise each day jumped from 45 per cent to 53 per cent. +The company does not know who is playing Pokémon Go - it just sees raw data on exercise levels. +Many public health campaigns to get people to "find 30," "get off the couch" and "be active everyday" have fallen on deaf ears because most public health messages are boring and delivered by people who look miserable. +Yet the importance of exercise cannot be understated. +Those who exercise regularly reduce their chances of getting cancer or depression. +Activity helps with weight management, high blood pressure, diabetes and a long list of benefits too long to list here. +But the beauty of Pokémon Go is it gets people outside doing something they enjoy. +Thus you are covering three pillars of health - movement, fresh air and sunshine, and fun. +Some people are even making new friends on the hunt. +As usual there are po-faced killjoys looking for something to complain about. +And yes somebody might walk into a door. +So what? +A breakthrough has occurred. +For while smartphone apps like Fitbit could previously track our activity, they didn't give us a reason to exercise like this game does. +The novelty will wear off and use will subside in due course. +However because of Pokmeon's success there will be more games that combine apps and virtual reality with being active in the real world, helping many people on the hunt to be more active, fitter and healthier. +Read Dr Joe's blogs at www.drjoetoday.com +Simone Biles nails all-around gold in women's gymnastics +Forget the pressure. +Forget the hype. +Simone Biles is immune to all of it. +Dynamic on vault. +Effortless on beam. +Jaw-dropping on floor. +Brilliant all over. +And now, finally, an Olympic champion. +The 19-year-old American gymnast soared to the all-around title on Thursday, putting the gap between herself and the rest of the world on full display under the Olympic spotlight. +Her total of 62.198 was well clear of silver medalist and "Final Five" teammate Aly Raisman and Russian bronze medalist Aliya Mustafina. +United States' Simone Biles performs on the balance beam during the artistic gymnastics women's individual all-around final at the 2016 Summer Olympics in Rio de Janeiro, Brazil, Thursday. +Biles became the fourth straight American woman to win the all-around title and fifth overall while cementing her reputation as the best of her generation and perhaps ever. +She burst into tears when her final total was posted and her long journey to this moment ended. +The achievement puts her in the same league as once-in-a-generation athletes like Michael Phelps who have taken their sports to new heights: +Biles has spent the last three years dominating her sport, winning 15 world championship medals - including 10 gold - with routines so astonishing in their mix of ambition and precision that 1984 Olympic champion Mary Lou Retton called her "the greatest gymnast I've ever seen." +One last test awaited in Brazil, a contest not so much between Biles and the rest of the field but between herself and the burden of oversized expectations. +Anything less than heading back to her family's home in Spring, Texas, with a fistful of golds would be seen as a disappointment. +United States' Simone Biles, left, and Aly Raisman embrace after winning gold and silver respectively for the artistic gymnastics women's individual all-around final at the 2016 Summer Olympics in Rio de Janeiro, Brazil, Thursday, Aug. +Biles earned the first one on Tuesday while serving as the exclamation point to retiring national team coordinator Martha Karolyi's going away party. +While Biles insisted she's never looked ahead during her long run at the top, that's not exactly true. +A portion of her floor exercise routine - the one that includes her signature tumbling pass - is set to Latin music that would fit right at home in the street right outside the Rio Olympic Arena. +It's not a coincidence. +The girl adopted by her grandparents as a toddler and discovered by coach Aimee Boorman's mother during a field trip to the gym where Boorman was coaching has become a force. +She hasn't lost an all-around competition since the summer of 2013, a winning streak that should go for as long as Biles wants it to. +Though Mustafina took a small lead through two rotations, it was a mirage. +Balance beam and floor exercise - where Biles is the defending world champion - lay in wait. +She went back in front with a 15.433 on beam - and capped it with a 15.933 on floor. +Raisman hugged her gently as they awaited the final score - a mere formality - and tears appeared around Biles' glittery red, white and blue eyeliner when the vision she once wrote in a scrapbook became a reality. +Raisman's performance was a bit of revenge from four years ago, when she tied for third but lost the bronze to Mustafina on a tiebreaker. +This time, the 22-year-old team captain the Americans call "grandma" was well ahead. +She blew kisses to the crowd after her floor exercise, overcome by a comeback that at times seemed in doubt. +As for Biles, the 19-year-old's viral tweet from earlier this week now carries a whole new meaning: +Police: 3 victims in serial killer case shot while listening to music in car +Two women and a 12-year-old girl who died in the deadliest attack in Phoenix's first serial killer case in a decade were sitting in a car talking and listening to music when they were shot, according to police reports released Thursday. +Angela Rochelle Liner, Stefanie R. Ellis and Ellis' daughter Maleah were shot on June 12 while the car was parked in a driveway, authorities said. +The gunman fired as many as eight shots from a handgun while standing on the passenger side of the car then fled in another vehicle, the report states. +Police say the triple killing doesn't appear to have been the result of a robbery because the attacker didn't take purses or $2,900 in the possession of one of the adult victims. +Phoenix police spokesman Sgt. Jonathan Howard said the shooting prompted investigators to look at whether it was tied to four earlier attacks. +In all, seven people have been killed and two others wounded in nine attacks in two predominantly Hispanic neighborhoods over a four-month period. +"It's occurring within a residential area in front of a home," Howard said to CBS affiliate KPHO earlier this month. +The suspect is believed to have used several vehicles, including as a late-1990s brown Nissan, a late-1990s black BMW and a white Cadillac or Lincoln. +Investigators have declined to reveal the evidence that led them to conclude the attacks are related and committed by the same killer. +Ellis, 33, was hospitalized for her injuries and later died. +Liner, 31, and Ellis' daughter Maleah died at the scene. +A witness told police that it wasn't unusual for them to sit in a parked car listening to music. +Authorities also released a police report on a shooting that targeted an unoccupied pickup truck just a half-hour before the triple killing and is believed to have been the work of the serial killer. +Investigators found bullet casings and recovered a bullet from a seat and bullet fragments from the engine compartment. +Mother of 6-year-old with microcephaly: "It gets better" +Like most six-year-olds, Edmund Picciuto loves singing, toys and, of course, his mother. +But unlike most of his peers, Edmund has microcephaly, the result of a genetic disorder his mom Elizabeth Picciuto didn't know about while pregnant. +When he first came home my initial thought was, I can't do this. +I can't do this. +I didn't sign up for this. +Which is not true at all -- of course you sign up for it," she said. +She and her husband, Vincent, were told Edmund might never recognize them, and that he might not even survive. +Some doctors went as far as suggesting he be institutionalized. +"My first response was 'I didn't think people did that anymore,'" Picciuto explained. +Edmund walks with the help of a walker. +Edmund didn't sit up or crawl until he was three, and he still doesn't talk. +But he's slowly meeting some milestones. +He's walking with help, and riding a bike. +He also loves playing with his two brothers, and singing. +Elizabeth demonstrates the sign language Edmund made up for "please sing to me." +"We're teaching him sign language," Picciuto told CBS News. +But it's not just typical sign language -- she says Edmund has invented some of his own signs. +Microcephaly can arise from a number of different conditions: genetic ones like Edmund's, and infections during pregnancy from viruses like measles and Zika. +Symptoms and prognosis can vary widely. +It's too early to tell how it will affect the lives of those infected with Zika. +Picciuto remembers the emotional toll of an uncertain future. +I kept saying, what's going to happen? +What's going to happen? +And she still doesn't really know. +I actually haven't asked for a prognosis in forever, because I don't expect anyone to really be able to tell me. +But Picciuto has hopeful advice for the mothers of babies with birth defects from Zika. +It gets better. +You know it will get better for you. +You will love your child, and your child will love you. +Heavy rain, flooding prompts rescues in Louisiana, Mississippi +Heavy rain and widespread flooding in Louisiana lead the governor to declare a state of emergency on Friday, with more rain expected over the state through Saturday. +Numerous rivers in southeast Louisiana and southern Mississippi were overflowing their banks and threatening widespread flooding after extreme rainfall, the National Weather Service reported. +Louisiana Gov. John Bel Edwards said state officials are in constant contact with local officials, and assistance is already on the move to affected parishes. +Mike Steele, a spokesman for the Governor's Office of Homeland Security and Emergency Preparedness, said requests were coming in for high-water vehicles, boats and sandbags. +Steele said Tangipahoa Parish alone requested tens of thousands of sandbags. +A flood watch remains in effect until Saturday across most of south Louisiana. +The weather service said in a statement that an additional 3 to 5 inches could fall over the area. +In south Alabama, a flood watch was in effect Friday as rain continued in the Mobile area. +The Comite River near Baton Rouge and Amite River near Denham Springs, both in Louisiana, were predicted to set record crests over the weekend. +Forecaster Alek Krautmann said both rivers could flood many houses in suburban areas near Baton Rouge. +He also said that flooding downstream in Ascension Parish is a threat, as those swollen rivers will be slow to drain into Lake Maurepas. +The Tickfaw River, just south of the Mississippi state line in Liverpool, Louisiana, was already at the highest level ever recorded at 9 a.m. Friday. +Rescuers were still plucking people from floodwaters in Amite and Wilkinson counties in southwest Mississippi. +Leroy Hansford, his wife and stepson were among those rescued earlier Friday near Gloster. +Hansford, 62, says waters from Beaver Creek, which is normally more than 400 feet away from his house, rose quickly overnight. +He said another stepson who lives nearby alerted him. +"We woke up and the water kept on coming," Hansford said. +It came up to my waist. +His wife told Hansford that it's the highest she's seen the creek in the 48 years she's lived there. +Hansford said he and his family members all have disabilities, and he's the only one who can swim. +Hansford said emergency workers rescued all three in a large military-style truck and took them to the fire station in Gloster, where they were sheltering Friday. +Krautmann says flooding is "quickly becoming widespread" as heavy rains continue, saying officials are considering evacuation orders. +Krautmann says one observer near Livingston reported 13.75 inches of rain from midnight to Friday morning. +Krautmann said the ground was heavily saturated by rainfall since Wednesday. +Heavy rain and street flooding prompted the rescue of residents from their homes in Tangipahoa Parish and the cancellation of classes in five school districts, authorities said. +CBS affiliate WWL reports that an alderwoman in Tangipahoa said 200 homes flooded. +Residents had been evacuated to two churches but both are now flooding. +Parish President Robby Miller said authorities rescued 72 people and seven pets stranded by high water. +Shelters have been opened in the town of Amite and the city of Hammond to house those who were evacuated. +"They will be allowed to return home once the water starts to recede," he said. +In the Tangipahoa Parish city of Hammond, close to two dozen streets were closed because of high water, and sandbags were made available for pickup by residents hoping to keep water out of homes and businesses. +"The last major flood we had was in March," said city administrator Lacy Landrum. +This one is on track to be a similar event. +In Mississippi, Harrison County Emergency Manager Rupert Lacy said steady rain continued on the Gulf Coast. +He said a handful of houses were reported as flooded Thursday, but none have been reported so far Friday. +Keith Townson, manager of Shopper Value Foods in Amite, has lived in the area for 40 years. +"I've seen water in some places I have never seen before," Townson said, "and it's still coming down." +Mahaj Brown, 6, "riddled with bullets," survives Philadelphia shooting +Police say a 6-year-old boy has been shot in Philadelphia, marking the second shooting of a 6-year-old in the city this week. +The child's grandparents identified him to CBS Philadelphia as Mahaj Brown. +The grandparents say Brown suffered multiple gunshot wounds, including in his groin, leg, arm and abdomen, but was awake when he was transported to the hospital. +"He just took a lot, his little body was riddled with bullets," his grandmother Delores Melendez tells the station. +I just can't believe it. +The boy is listed in critical condition at a hospital and has undergone several surgeries. +Family tells the station he is expected to recover. +He was set to start first grade at a local elementary school. +Brown was among four people shot in the Germantown section. +Also shot were three men: two 29-year-olds and one 32-year old. +One of the 29-year-old men was reported in critical condition; the other two victims were listed in stable condition, according to CBS Philadelphia. +The child was found shot in the front seat of a car along with the 29-year-old in critical condition, the station reports. +The other two victims were not in the car and police are investigating whether any of the wounded men could be a shooter. +Investigators tells CBS Philadelphia it appears there was crossfire between multiple gunmen. +Assault weapon-style shell casings, traced to different assault style weapons, littered the scene. +It appears that this was definitely an ongoing battle. +There were casings in the street, on both sides of the sidewalk. +So it appears that there were multiple armed combatants out here and that they were actively engaged," Philadelphia police Captain Anthony Ginaldi told the station. +Multiple houses and vehicles in the area were also struck. +No arrests have been made and police are reportedly reviewing surveillance video. +Another 6-year-old, a girl, was hit in her arm by a stray bullet Tuesday while playing in front of her home in the West Oak Lane neighborhood. +She is recovering, and police are still searching for a suspect. +Why we need Simone, Gabby and Laurie +That's what I call this year's Women's Olympic Gymnastics Team and for more reasons than one. +First, I have been to every Summer Olympics since 1984 and the USA has never been so dominant. +And second: This team features three gymnasts, Simone Biles, Gabby Douglas and Lauren "Laurie" Hernandez, who have been inspiring so many young girls of color. +The make-up of this team, rounded out by Aly Raisman, who is Jewish, and Madison Kocian, who is Catholic, is making everyone proud. +This team looks, finally, like America. +It also has solidified the black and Latina female presence at the top of this sport. +For the past four years, the number one female gymnast has been African-American. +Last year, Simone and Gabby were #1 and #2. +This is powerful. +Last Olympics, Gabby Douglas was a surprise Olympic champion, and America cheered. +Now the world has been able to witness the incredible performances of three-time World Champion Simone Biles, Douglas and Laurie Hernandez delivering the unexpected, yet masterful gymnastics routines. +On Thursday, Simone became the fourth straight American to win gold in the women's individual all-around event. +And teammate Aly Raisman earned silver. +We are witnessing the top of the sport, but it does not look like this at gymnastics classes across the country. +Simone, Gabby and Laurie all took the same path as Aly and Madison to make the Olympic team. +They are the "Final Five" because the next Olympic gymnastics team will only have four gymnasts on the team, and this is Marta Karolyi's last year coaching. +But the reality is that gymnastics is an expensive sport, and gymnasts primarily train in private gymnastics clubs that are maintained by parents paying the cost of the training, facility, travel, uniforms, competition fees, hotel fees (for the coaches and their gymnasts and families) and the list goes on. +Most of these gymnastics clubs are located in affluent suburban neighborhoods that can support the business. +These clubs are where the gymnasts get all of their training, and it's a costly and long-term commitment for the gymnasts' families. +Aimee Boorman, coach of Simone Biles, and Maggie Haney, coach of Laurie Hernandez, have both coached their athletes since they started in gymnastics. +We must bring more affordable and accessible gymnastics training to the communities of countless young girls who are inspired by Simone, Gabby and Laurie. +I founded my gymnastics foundation 20 years ago. +At my organizations, we have provided free and low-cost gymnastics, based in Harlem, for over 15,000 urban youth (primarily black and Hispanic) and have trained national and international champions. +In September, we will be expanding to Detroit (my hometown) to provide high quality gymnastics to the youth that deserve the opportunity to learn and benefit from this great Olympic sport. +Gymnastics develops strength, flexibility and coordination for the body and hard work, discipline and determination for the mind. +This combination provides life-long benefits for good health, success in school and work. +It is the inspiration of this team that will send thousands of young girls to take gymnastics and that is great. +To participate in sport is so important, especially for girls. +This is such an exciting time. +Thank you Simone, Aly, Laurie, Gabby and Madison for that serious showcase of "Girl Power" in winning the Olympic team gold and for motivating so many young girls of all backgrounds to begin their path to be healthy, strong and successful young women. +Junior doctors set to mount further strikes after rejecting Jeremy Hunt's proposal +Ministers had hoped to end the dispute over the changes by agreeing to a reformed contract with British Medical Association officials, but 58 per cent of the 37,000 junior doctors who took part in a ballot had rejected it. +In July, Mr Hunt revealed plans to impose the contract saying the NHS was in "no man's land" and any further delay would be damaging for staff and patients. +The first junior doctors are moved onto the new contract, which includes changes to overnight and weekend working practices to improve care at unsociable hours. +Dr Ellen McCourt, the BMA's junior doctors" committee chair, said in a statement last night: "Junior doctors still have serious concerns about the proposed contract, particularly that it will fuel the current workforce crisis, and that it fails to treat all doctors fairly." +With just eight weeks before the first group of doctors are moved onto the new contract, progress needs to be made and time is running out. +Efforts by the BMA to resolve the dispute through talks have been met with an unwillingness to engage and, at times, deafening silence from the government. +This is despite a promise from Jeremy Hunt just last month that his door is always open. +"Jeremy Hunt needs to act now, lift the imposition and address junior doctors" concerns. +If he does not then junior doctors are clear that they are prepared to take further industrial action. +The last strike at the end of April saw the postponement of nearly 13,000 routine operations and 100,000 appointments as nurses and consultants were drafted in to provide cover for doctors on the picket line. +Ministers had hoped to end the dispute over the changes by agreeing to a reformed contract with British Medical Association officials. +The BMA wants better weekend pay for the 54,000 junior doctors who would be subject of the contract. +Daniel Mortimer, chief executive of NHS Employers, called on junior doctors not to go ahead with any strikes. +Mr Mortimer said: "Industrial action achieves little or nothing, but places pressure on already stretched teams and services and causes worry, distress and disruption for patients, carers and their families." +Over the last two months we have been talking with the Junior Doctors Committee and have, along with the Department of Health and others, responded positively to their concerns regarding the Guardian Role and Whistleblowing. +Employers were hopeful that the continued positive engagement on other important topics - such as deployment, flexibility in training, additional training for those returning from career breaks, costs of training, mutual recognition of syllabus, study leave and the gender pay gap in medicine - were a sign of how serious employers, Health Education England and the Department of Health were about honouring the agreements reached with the BMA in November, February and May. +The £2-a-day drug that can cut heart attack threat +Thousands of heart attack patients are to benefit from a £2-a-day drug, after officials recommended it be given to more people for longer. +Anti-clotting drug ticagrelor slashes the risk of repeat attacks for people with heart disease. +The drug is already given for 12 months after a heart attack, reducing the risk of a stroke or another attack. +NHS watchdog NICE has advised that it should be given to people for four years, to further reduce the risk of cardiovascular problems. +But now NHS watchdog NICE has advised that it should be given to people for four years, to further reduce the risk of cardiovascular problems. +Some 140,000 people have a heart attack in England every year, and a quarter of these go on to have another attack or a stroke. +Heart attacks and strokes are caused by the build-up of fatty material in artery walls to form a plaque. +If the plaque breaks apart it can cause a blood clot, blocking blood to the heart causing a heart attack. +And if the clot dislodges it can travel in the blood stream and block blood flow to the brain, causing a stroke. +People who have already have one attack are at a higher risk of having another. +Ticagrelor, which is made by UK firm AstraZeneca and sold under the trade name Brilique, reduces this risk by making clots less likely. +The draft NICE guidance, published today, recommends that people be given 90 mg of ticagrelor for 12 months, followed by 60mg along with aspirin twice a day for another three years. +Professor Carole Longson, director at the NICE health technology evaluation centre, said: "Despite the availability of effective secondary prevention treatments, as many as a quarter of people who have had a heart attack go on to have another heart attack or stroke - often with devastating consequences." +Fear of a recurrence can have a significant negative impact on a person's quality of life. +The evidence shows that ticagrelor, in combination with aspirin, is effective at reducing the risk of further heart attacks and strokes in people who have already had a heart attack. +In provisionally recommending ticagrelor we are pleased to be able to increase the treatment options available to the many thousands of people who stand to benefit from it. +Because information on the efficacy and safety of ticagrelor - particularly the risk of bleeding - beyond three years is limited, the draft guidance does not recommend treatment with it beyond that period. +PC culture let vote fraud in Muslim areas flourish +Ex-Tower Hamlets mayor Lutfur Rahman was removed from office last year for corruption, prompting the government report +A culture of political correctness has led to a blind eye being turned to widespread voting fraud in Muslim communities, a devastating government report reveals today. +Ex-Cabinet minister Sir Eric Pickles lambasts the police, election watchdogs and town halls for ignoring evidence of electoral abuse because of "over-sensitivities about ethnicity and religion." +The former communities secretary, now the anti-corruption tsar, said the intimidation of voters on religious grounds was so bad that police should be allowed to put cordons outside polling stations to protect frightened voters. +He recommends that voters should have to take ID to prove who they are when they vote. +Currently, a voter merely has to state their name and address. +The report even suggests putting indelible ink on a person's fingers as they cast their ballot to prevent anyone being able to vote twice. +Greater protection should be given to whistleblowers, Sir Eric says. +He calls for the Press to be given greater access to council papers and decisions taken by unofficial committees or working groups. +"This is not solely to protect against electoral fraud, but to protect local government from the broader culture of corruption and financial fraud that goes hand in hand with it," he said. +The report was ordered by Downing Street in the wake of the Tower Hamlets voting scandal in East London. +Last year a special election court ruled the sitting mayor, Lutfur Rahman, should be removed from office following a litany of corrupt and illegal practices. +The court found Rahman "cynically perverted" the religious feeling of his Muslim community and silenced his critics with accusations of racism and Islamophobia. +Rahman, it was said, "ran his campaign on the basis that it was the religious duty of faithful Muslims to vote for him." +Up to 300 votes were dubious or the result of personation, where a person votes while posing as someone else. +Sir Eric said there was evidence of fraud across the country. +He voiced particular alarm about postal voting fraud - in which senior members of the Muslim community were said to have exerted pressure on people to vote for a candidate of their choosing. +Sir Eric, pictured, made several recommendations to clean up the voting system including bringing your ID to prove who you are +His report says: "Evidence was presented of pressure being put on vulnerable members of some ethnic minority communities, particularly women and young people, to vote according to the will of the elders, especially in communities of Pakistani and Bangladeshi background. +"There were concerns that... state institutions had turned a blind eye to such behaviour because of "politically correct" over-sensitivities about ethnicity and religion." +Sir Eric made 50 recommendations to clean up the system, including banning political activists from handling postal ballot papers to stop "vote harvesting." +The report, being considered by Theresa May, also calls for tougher checks on registration to prevent the electoral register being used for immigration and benefit fraud. +Consider the options for requiring voters to produce ID before voting. +Use indelible ink on a person's fingers once they cast their ballot to prevent anyone voting twice. +Carry out systematic checks on a person's nationality to ensure they are eligible to vote. +Put a three-year limit on requests for an automatic postal vote. +Ban political campaigners and activists from handling completed postal votes and postal vote envelopes. +Give police powers to set up cordons around polling stations. +Change the law to make it easier to charge people with intimidation under the Representation of the People Act 1983. +Make it illegal to take pictures in polling stations. +Make it a requirement that only English is to be used in polling stations (except in Wales). +Strengthen training to ensure staff enforce the rule that voters go to the booth alone. +Sir Eric savages the Metropolitan Police, saying it is "astonishing" that no criminal charges were brought after the Tower Hamlets case. +"The election court disqualified Lutfur Rahman and his agent for a litany of corrupt and illegal practices," he said. +He was found guilty beyond reasonable doubt - to a criminal standard of proof - on a series of grounds. +He also criticises the ineffectual "tick-box inspections" of town hall electoral registration departments. +Sir Eric said: "Last year's court ruling in Tower Hamlets was a wake-up call. +Our nation has a proud heritage as the mother of parliaments, yet the worrying and covert spread of electoral fraud and state of denial by some bodies threatens that good reputation. +Crazy for Kate's cyclist lookalike and other celeb doppelgangers of Rio Olympians +Fans of the Rio 2016 Olympics this week have gone wild for French cyclist Pauline Ferrand-Prevot, who has proven an impressive lookalike for the Duchess of Cambridge. +But the 24-year-old Olympian is far from the only athlete out fighting for gold this summer that boasts their own celebrity doppelganger - at least not according to social media. +So, in honor of the Rio Games and all the famous faces crossing our screens at the moment, FEMAIL have compiled a list of Olympians who bear more than a passing resemblance with Hollywood celebs. +The hunter and the wolf: U.S. Men's Archery Team member Brady Ellison, left, has been compared to Leonardo DiCaprio since he was a kid +Aside from Kate's doppelganger on the cycling track, many people online have been quick to point out how a certain archer could be the twin of A-lister Leonardo DiCaprio. +U.S. Men's Archery Team member Brady Ellison has caused a storm on Twitter after images of him looking eerily similar to the Wolf of Wall Street star surfaced. +And in fact, the archer became aware of the social media frenzy and admitted that he has been hearing that he looks like Leo since he was a kid. +'I personally don't see a huge resemblance, maybe besides the facial hair,' Brady told Huffington Post. +'He is a good-looking dude so I guess it's a compliment.' +One of the most popular comparisons from London 2012 is undoubtedly going to be pointed out even more this year: the striking likeness between British long jumper Greg Rutherford and popular actor Neil Patrick Harris. +Russian gymnast Aliya Mustafina, with her large, expressive eyes, has been said to be a dead ringer for Cuban-American singer Gloria Estefan. +And over in the pool, South African swimmer Cameron van der Burgh has been getting compared to Glee star Matthew Morrison for years now. +Changing it up: This user reckons that Nathan is an 'athletic version' of the Inception actor +Another long-running comparison has been between tennis star Rafael Nadal and actor Josh Hartnett who boast a similar heavy brow and lips. +Silver medal swimmer Russia's Yulia Efimova boasts more than just the same sunkissed skin and blonde hair as actress Annalynne McCord, while Team USA's Nathan Adrian has been said by fans to resemble an 'athletic version of Joseph Gorgon Levitt.' +Tough women: Soccer star Hope Solo, left, and Dexter actress Jennifer Carpenter, right, have similar face shapes and eyes +Not the only one: One Twitter user was very pleased that others also saw the similaritiest +Floating a theory: According to this user, perhaps there is a reason behind the pair's similar looks +One Twitter user took to the site recently to declare her happiness that 'the rest of the internet thinks that Hope Solo and Jennifer Carpenter are actually identical.' +Indeed, the USA soccer star and the Dexter actress share incredibly similar face shapes and eyes. +Other popular comparisons have included Kerri Walsh-Jennings and her smile that is near-identical to that of actress Laura Linney, as well as gold medal-winning gymnast Gabby Douglas, who boasts her own beautifully broad smile that matches that of Bring It On star Gabrielle Union. +CBC Olympics commentator apologizes for saying Chinese swimmer 'died like a pig' +Byron MacDonald's analysis of 14-year-old Ai Yanhan's fourth place finish at the women's 4x200m freestyle relay outraged viewers of CBC's live Olympic coverage on Wednesday +Canadian broadcaster CBC has been forced to apologize after one of its commentators said a 14-year-old female Chinese swimmer 'went out like stink' and 'died like a pig' during a race. +Commentator Byron MacDonald thought his mic was turned off when he started to dispense some of his own opinions at the end of the women's 4x200m freestyle relay final. +MacDonald, who was brought on board CBC's commentary team to provide 'color' could be heard saying: 'That little 14-year-old from China dropped the ball, baby'. +Too excited, went out like stink, died like a pig. +Thanks for that. +Chinese swimmer Ai Yanhan, 14, swam the second leg of the relay in 1:57.79 - 1.61 seconds slower than Canada's Taylor Ruck, allowing the Canadians to close the gap on China. +Viewers across Canada were quick to react online after being shocked by the tone and the language used +Emmett Macfarlane tweeted, "Did the CBC announcer just say the 14-year-old swimmer from China 'died like a pig'"???? +The idiot didn't realize they were still on the air.' +Ai Yanhan of China in the Women's 4 x 200m Freestyle Relay Final was described as: 'That little 14-year-old from China dropped the ball, baby.' +Criticism on Twitter came thick and fast against Byron MacDonald with many calling him out +Twitter users did not hold back when the heard how insensitive Byron Macdonlad was being +Another twitter user, Sarah Paradis, wrote: 'Wow #ByronMacDonald. +You represent the CBC and Canada and make us all sound like a bunch of racists. #disgusted. +Soon after, Scott Russel who was hosting CBC's broadcast apologized on-air for MacDonald's comment, saying: 'We apologize the comment on a swim performance made it to air.' +It was an unfortunate choice of words, we're sorry it happened.' +CBC ended up apologizing more than 90 times to people who had tweeted in response to the remark +Fellow commentator, Scott Russel, had to make an apology on MacDonald's behalf +CBC then copied and pasted their apology to more than 90 other twitter users who complained about MacDonald's comments +The network was also quick to apologize and released a statement. +We sincerely regret that these statements were made, and that they were allowed to go to air. +We moved quickly last night to apologize to our viewers on-air and to our followers on Social media. +To be clear, Byron's comments were related to the swimmer's performance, not to her as an individual. +That said, they were inappropriate and an unfortunate choice of words and Byron is very sorry for what he said. +On Thursday afternoon, MacDonald apologized on-air and attempted to qualify his remark by stating he didn't mean for it to be construed as a personal attack. +'I would like to take a moment to apologize for a comment that I made last night after the women's relay,' he said on CBC's Olympic broadcast.' +'I was referring to a swimmer's performance, and not to them as a person.' +'Needless to say, there was no disrespect intended and I'm very sorry.' +Primark shopper outraged at woman who brazenly tried on underwear in the middle of the shop +Shoppers didn't know where to look when a woman stripped off to try on knickers on the shop floor in the middle of a Primark. +To make it even worse, she sized up how she looked in them, peeled them off and put them back on the shelf. +She carried on browsing and eventually tried on four pairs of underwear at the store in Bouverie Place shopping centre, Folkestone. +The Primark store in Bouverie Place shopping centre, Folkestone, where the woman tried on knickers before putting them back on the shelf +A mother-of-two, Jenny Davidson, who was in the shop at the time, said after trying on the underwear the mystery woman 'got dressed again and walked out of the store without buying anything.' +She said: 'People couldn't believe what they were seeing.' +Standing in the middle of the shop floor, she took a pair of knickers from the display, stripped off her own tights and pants and put them on. +'She didn't try to find anywhere discreet to do it - she just stood there, bold as brass.' +'Everyone was staring as she took the knickers off again and obviously didn't like them because she put them back on the shelf.' +She did the same with three more pairs before finally deciding there was nothing she liked and she got dressed again and walked out. +'She didn't seem to care who was watching - or think about the person who would eventually buy the knickers she'd been trying on.' +Ms Davidson, 33, who lives in the Kent town, said: 'How disgusting to think someone is going to take home knickers that another person has been wearing and they haven't been cleaned.' +The incident happened on Tuesday afternoon. +Ms Davidson added: 'I gather the staff apparently tried to remove the garments from sale after she had left - which is just as well.' +'I'd hate to get home with a new pair of knickers and find another woman had put them on and taken them off again, and they hadn't been washed.' +A Primark spokesman said: 'Primark is aware of an incident which took place in our Folkestone store on Tuesday August 9.' +All the product in question has been removed from sale. +How to defend yourself from gun attacks using Krav Maga +It's a dangerous world out there, but this video from Dailymail.com might help make it a little safer for you. +We spoke to Rhon Mizrachi, New York-based grandmaster of the Krav Maga Federation, to find out how to deal with gun-toting muggers at close range. +Whether you're approached from in front or behind, this video will show you how to turn the tables on your mugger. +If approached from behind, Mizrachi says, the first thing to do is turn around, so that you can see your attacker and 'clear the line of fire'. +You then grasp the gun between your forearm and shoulder before hitting them in the face with your free elbow. +A knee to the groin follows, and while the attacker doubles up in pain, you twist the gun from his hands, smack him in the face with the barrel and back up, keeping the weapon trained on him. +For gunmen approaching from the front, it's a similar technique - get your body out of the line of fire, grab the gun and twist it around so the villain can't fire. +At the same time, put weight on the gun and punch the attacker in the chest, then twist the gun from his grip before backing up and pointing it at him. +Sounds tricky? +Check the video to see exactly how Mizrachi does it. +But remember that the safest way out of any mugging - if you're not a Krav Maga grandmaster - is to hand over your cash. +Traveller Ian Wright scrapes his tongue along Europe's dirtiest places for travel guide +A British traveller has put his immune system and gag reflex to a serious test - by licking some of the dirtiest and disgusting places in Europe. +Presenter and travel writer Ian Wright, 51, from Suffolk, scraped his tongue along a Euro note, a Piccadilly Circus hand rail, a train toilet's flush button and a Russian public telephone to prove the strength of his immune system. +Before licking each object, he used a luminometer to show himself, and us, just what he was getting in to. +But the experiment, which has be made into a film called The Lickhiker's Guide to Inner Strength, threw up some surprising results. +The thought of licking a train's flush button used by thousands of other may be utterly repellent, but in fact there are more bad bacteria in a kitchen sink. +All the way along his trip through Europe, Mr Wright spoke to doctors and medical professionals about boosting gut bacteria and about his own health. +Fortunately, nothing he licked left him with anything more than a bad taste in his mouth. +Mr Wright became known for testing the durability of his gut by travelling around the world and eating weird and wonderful things. +From public handrails in train stations to a toilet flush button the task definitely tested his immune system +In the movie made about it he said: 'Ever since I was a kid I have been fairly carefree with my health and I've put all sorts of things in my mouth from soil, eating worms and muddy water.' +He certainly proved his reputation during the film. +The only thing he turned down was a filthy Russian public toilet. +His sample swab showed a luminometer count of over 4000 units. +By comparison, freshly washed hands should come in under 60. +But there was one Russian public toilet he refused to lick after his luminometer count was over 4000 units, when freshly washed hands are less than 60 +Mr Wright and Finnish dairy producer Valio have produced the traveller's film called The Lickhiker's Guide to Inner Strength which shows the bacteria count in different place like in the bathroom +He said in the film: 'That is close to one of the worst things I have smelled in a toilet.' +There's nothing more dirty than that! +I'm not going to lick anything because it's disgusting in there. +The Lickhiker's Guide to Inner Strength was produced in conjunction with Finnish dairy producer Valio. +The company provided Mr Wright with Valio Gefilus, which contain lactic acid bacteria as well as vitamins C and D to help boost people's gut bacteria and immune systems. +Valio's Senior Vice President of Snacks, Juice and New Categories Niko Vuorenmaa said: 'We really wanted to offer consumers something new. +Something that would be fascinating to watch and at the same time explain the benefits of probiotics. +We did a lot of crazy brainstorming that ended in the idea "let's call Ian." +They claim the interest in gut health is becoming a global phenomenon +Instead of just talking about the products, we wanted to put them into a bigger context - the good and bad bacteria in our everyday environment, the importance of gut health and how it's linked to the immune system. +Growing interest in gut health is a global phenomenon and with the documentary we could provide consumers with more information about it in an interesting way. +I also think the film shows we have a great sense of humour! +Tom Hakala, who directed the film, added: 'Let's put it this way - I would have lost my respect for Ian if he had licked some of the things I asked him to, like the disgusting Russian toilet that's shown in the film.' +Naturally some things were easier to get Ian to lick, some were pretty tough. +I'm glad we got some of those dirty licks caught on tape.' +In a survey conducted in 2015 by Valio, 84 per cent of the respondents associated lactic acid bacteria specifically with the well-being of the stomach and gut and 58 per cent said they use at least occasionally products containing added lactic acid bacteria. +Family of yobs destroyed Saltash, Cornwall council house ahead of eviction +A family of yobs left their council house with £50,000 worth of damage after they were evicted for terrorising their neighbours. +Tanya Skeldon and her partner Shaun Trebilcock have been kicked out of the property in Saltash, Cornwall, after a long list of complaints against them. +After they were forcibly removed from the property, shocked housing associations officers found the property in a state of disrepair. +The walls were left with gaping holes, floorboards were ripped up, rubbish was strewn over the floor and graffiti was daubed on the walls. +The family have now been moved on and are believed to be living in a private accomodation +Donna McEvoy, housing manager at Cornwall Housing, said she feared it might be beyond saving. +She said: 'It's been an absolute nightmare for people down here and I don't think people should have to live like that. +There are a lot of things to weigh up because this property will probably be known by the not-so-nice element of Cornwall. +This family are notorious and their name is notorious. +The couple had three sons who lived at the property intermittently and police say the reign of terror the family inflicted included fighting in the street with baseball bats, intimidating nearby residents, drug use, drug dealing and excessive shouting, arguing and swearing. +Skeldon, 47, whose name was on the tenancy, was given an antisocial behaviour order in June. +Old rubbish was found in a number of the rooms of the house, which may be demolished +Floor boards had been pulled up in the property, from which drugs had been dealt in the past +Neighbours say they were seen fighting in the street and police were regularly called +Cornwall Housing evicted her and her partner forcefully from the property this week after giving them an extended period of 11 weeks to move on voluntarily. +The eviction was hailed by relieved neighbours who said their lives had been made a living hell. +One said: 'They didn't care about anybody.' +We lived next to them for 20 years and it's always been bad. +The amount of times we've seen the police down here is unbelievable. +'This morning, we couldn't sleep.' +We got up because it was so quiet here - we're not used to that! +It's going to be lovely now that they're finally gone. +Adam Fitzpatrick, Cornwall Housing's neighbourhood enforcement manager, said the family failed to cooperate with the local authority. +The family have lived in the house for 20 years, with police regularly called to the property +Rubbish and old toys have been thrown down the overgrown side of the council house +He added: 'It is a shame that the tenant failed to accept any responsibility for the behaviour of her and her family as eviction is always the last course of action that Cornwall Housing considers. +This was a very difficult case as the behaviour was extreme and their actions must have been terrifying for her neighbours to witness. +I appreciate all the work that has been put in by my team, Devon and Cornwall Police and members of the community who bravely came forward to give us information. +I hope that this development will give some comfort to the neighbours and sends out a message that antisocial behaviour will not be tolerated. +Mr Fitzpatrick said that the three sons had all lived at the property at different times but said they were all in their 20s. +A dirty mattress left on the floor of one of the bedrooms in the house after the eviction +Housing workers will now have to clear away the piles of rubbish which surround the house +In 2014, police raided the property and found more than 70g in cannabis as well as scales, paraphernalia and £1,700 in cash. +Skeldon was fined after pleading guilty to possession of a Class B drug with intent to supply. +She claimed the money was going towards a headstone for her son, Lee Skeldon, who died in a car crash in 2013. +After being made homeless, it is understood that Tanya and her partner are now living in private housing in Plymouth. +The walls of many of the house's rooms had graffiti scrawled across them. +Police say they will seek to evict tenants who flout the rules of their tenancies +Angela Crow, of Devon and Cornwall Police, said the eviction sent a clear warning to other tenants who continue to flout the rules. +'This sends out to those who feel that they can behave without recrimination, as well as those blighted by such behaviour,' she said. +Criminal and antisocial behaviour will never be tolerated by Devon and Cornwall Police, who will continue to work with partners to protect our communities. +Tourists in Portugal are left terrified as a low-flying military jet flies skims beach +Tourists sun worshipping in Aveiro, Portugal, had the shock of their lives +A Portuguese air force P-3C Orion plane swooped in incredibly low +The air force said it was on a training flight but insisted no risk to safety +This is the moment terrified tourists start to panic as a low-flying jet swooped down over a packed beach. +Dramatic footage showed the military plane almost coming within touching distance of sunseekers on the stretch of sand in Aveiro, northern Portugal. +Holidaymakers rose to their feet as they became understandably concerned about the noise from the jet engines without being able to see at first what was coming their way through the clouds. +The incident happened in Costa Nova near Aveiro yesterday afternoon. +Daniel Fernandes, one of several holidaymakers who posted videos of the dramatic fly-by onto social media, said: 'It passed really low twice and there was a point when it looked like it was going to crash.' +Nuno Arroja added: 'I was surfing and swear it felt like the plane was going to fall on top of me.' +Tourists on the beach at Aveiro were terrified when the plane appeared out of the murk and flew at an incredibly low altitude +The Portuguese Air Force said today the pilot of the P-3C Orion plane was on a training flight to identify fishing boats off the coast and had to drop so low because it was the only way of checking them. +He said the jet had flown slightly lower than normal because of poor visibility caused by the smoke from nearby wildfires, but the air force insisted no-one's safety had been compromised. +Wildfires have devastated parts of mainland Portugal this summer as well as killing four people on the island of Madeira. +The Portuguese air force said today the pilot had to fly low because of the conditions - thick fog and smoke from wildfires - which obscured his visibility +The plane was on a training flight and the pilot was being asked to identify fishing boats as part of the exercise +Supercup: Barca is worried about facing Sevilla +Seville - On Sunday, FC Barcelona will fight to take their first step towards their first title of the new football season. +The Catalan team will face off against FC Sevilla in an away game in Spain's Supercup; the second leg will take place three days later in Camp Nou. +The two-time champions will have to face up to the defeated Cup finalists and reigning Europa League champions without Neymar, who is playing in the Olympic football tournament for Brazil. +In addition, goalkeeper Marc-Andre ter Stegen is also missing. +During training the German pulled a ligament in his knee. At least it's clear who'll be wearing the number one jersey for Barca: Claudio Bravo. +The Chilean international and Ter Steigen have been competing for number one status for two years now. +Coach Luis Enrique has so far refused to make a clear decision either way, allowing Bravo to wear the jersey in league games, but giving it to Ter Stegen in most of their other matches. +Ahead of the first compulsory game of the new season there were doubts as to the Spanish champions' fitness: they lost 0-4 to Liverpool in a friendly game on Saturday. +Even with 3-2 in a friendly against Sampdoria on Wednesday, Lionel Messi and co. were not really all that convincing. +On the other hand, Sevilla have to swallow their 2-3 extra-time defeat against Real Madrid in the Supercup, and are aiming for a second victory in the "Supercopa de Espana". +With eleven victories, Barcelona are the current record-holders for this competition. +Ma Long is in a league of his own, taking Gold in the table tennis +Rio de Janeiro - Ma Long, from China, is the new table tennis Olympic champion. +On Thursday, the 27-year-old beat his fellow countryman and "defending champion" Zhang Jike in Rio de Janeiro 4-0 in a one-sided final (12,5,4,4). +This gave the world number one the "golden grand slam", winning the World Championship, the World Cup, the final tournament of the World Tour, and the Olympics. +The bronze medal went to Jun Mizutani from Japan. +The two Chinese men made it to the final, as expected, and fought each other for the title. +It was clear that, for the third time in a row, a Chinese athlete would take the singles title at the Olympics. +The last non-Chinese athlete on the top step of the Olympic podium was former SVS Lower Austria legionary Ryu Seung-min from South Korea. +Ma and Zhang were alone at the table: they had no coaches with them between sets and during time-outs. +They had returned to the stands, leaving their charges alone to fight a fair battle against each other. +"Up until now, I have played for my country." +"In the final, I'm playing for myself," Zhang summarised. +After the game, the gold and silver medallists posed with the Chinese flag. +The match itself was unexpectedly one-sided. +Ma only had to fight off his 28-year-old opponent in the first set. +Afterwards, he set the pace on the table, and only let Zhang score a total of 13 points. +Ma's dominance meant that the match was not as exciting as expected. +But nevertheless, there were some breathtaking volleys to be seen. +Mizutani won the bronze medal match against 40-year-old Wladimir Samsonow 4-1. +The Belarussian had injured his rib in his quarter-final against German European Champion Dimitrij Ovtcharov, and was given medical treatment, and ultimately had to content himself with fourth place. +Jan-Ove Waldner from Sweden (38/2004) and Jörgen Persson (42/2008) also reached fourth place at the Olympics at a similarly old age for table tennis. +Donald Trump admits there are "huge problems" with his election campaign +The US Republicans' lead is plagued by significant fears that they might lose their majority, even in states that are traditionally conservative. +Presidential candidate Donald Trump has now admitted to the weaknesses of his election campaign in Utah, formerly a Republican stronghold. +It was a strange moment - the multi-millionaire normally puts on a pompous, self-assured performance, but this time he expressed something analogous to doubt, as correspondents report. +After he had beaten 16 rivals from within the Republican camp, doubt is now growing as to whether he will be successful in the race for the White House. +"We have huge problems in Utah," Trump said to an audience of evangelical Christians whom he asked for assistance in key states such as Ohio, Florida or Virginia. +He blamed false reports on his candidacy, once again giving the media a dressing-down, as he is known to do. +Republican strongholds are wavering +Utah is normally a safe seat for the Republicans. +A poll carried out by SurveyUSA in June puts Trump and his competitor on an equal footing with Democrat Hillary Clinton. +Other bodies do put Trump ahead, but not by the margin usual for Republican candidates in the state. +Arizona and Georgia are also at risk. +In an interview with broadcaster CNBC, Trump was asked how he would stop Clinton's rise, replying: "In the same way I have done before". +And he added: "Either it'll work out, or I'll go on a long, long holiday". +He said he was just "telling the truth". +If he doesn't make it because of political correctness, that's ok, Trump added. +Then, he said, I'd return to a very nice way of life. +According to press reports, the party have threatened Trump with removing financial support for his election campaign if he is unable to do any better in the polls. +Instead, the Republican congressional candidates would be offered more support. +Olympics: Brazen cheating in doping tests +The IOC intends to set up a disciplinary committee to handle the case. +Following the second doping scandal at the Rio Olympics, trouble is looming for Kenya's track and field athletes. +After an attempt to deceive a doping check in the Olympic village, Kenya has sent one coach home. +The International Olympic Committee announced that it would set up a disciplinary committee immediately to investigate the case. +A Kenyan official announced that former sprinter and current coach John Anzrah had given a urine sample in the Olympic village in the name of 800-metre runner Ferguson Rotich. +Kenya's team managers were allegedly informed of this by the doping officials. +The global IAAF federation has requested information about the matter from the IOC so it can carry out its own investigations, stated an IAAF spokesperson. +"The IAAF will perform an evaluation, depending on the findings of the investigation and the steps taken by the IOC as a result," said an IAAF statement. +"He (Anzrah) went to the doping check and alleged that he was Ferguson Rotich, handed in the sample, and signed for it," explained Stephan Arap Soi, Kenya's Chef de Mission. +He had the athlete's accreditation as given in the list of training checks for the World Anti-Doping Agency. +Ferguson Rotich came fourth in the 800-metre race at the 2015 World Championships in Beijing. +Four days previously, the Head of the Kenyan track & field delegation, Michael Rotich, had been sent away from the Rio games. +He was alleged to have told sportspeople from his country about upcoming doping tests in exchange for money. +According to media reports, he was arrested on his return at Nairobi Airport. +After numerous instances of doping, the IOC has been keeping a particularly close eye on Kenya for a while. +When the IOC announced that it would hold more than 2000 targeted doping checks in advance of the Rio games, it also announced, unusually, that athletes from Kenya and Russia would be examined particularly closely. +Ahead of the summer games in Brazil, the World Anti-Doping Agency had put a lot of pressure on the African country to introduce an anti-doping law and a functioning system of checks. +The law was passed a few weeks before the start of the Olympics. +Following this, WADA removed Kenya from the list of countries whose anti-doping measures comply with WADA rules. +Running is a national sport in Kenya. +The country's track and field athletes won the most medals at the 2015 world championships in Beijing. +In a series of televised reports by ARD, the claim was made time and again that doping drugs are easily accessible in Kenya and that there is a mentality of cheating at sport. +IOC member Richard Pound has recently called for an investigation in Kenya to mirror that which took place into Russian athletics. +This investigation proved that doping was undertaken extensively and systematically across the sport. +As a result, Russia's track and field athletes were banned from the summer games. +Salzburg's "West Side Story" with Cecilia Bartoli +In the Shakespeare anniversary year, the Salzburger Festspiele is putting on "West Side Story" with Tony and Maria as tragic couple just like Romeo and Juliet. +Featuring a surprise: Cecilia Bartoli. +A musical has gripped Salzburg: Leornard Bernstein's masterpiece, "West Side Story". +Artistic Director Cecilia Bartoli wanted to bring the musical into the temple of classical music, and has made a childhood dream come true by taking on the role of Maria. +In the orchestra pit, the Simón Bolívar Orchestra will be conducted by Venezuelan director Gustavo Dudamel: "This music is full of rhythm," he enthuses. +We always say that it has a lot of Latin American influences. +There are many Latin American elements in its tempo and melodies. +It is a wonderful mixture, the perfect formula for our orchestra. +I would say that we really have Bernstein's music in our blood! +In this production, Bartoli plays an older Maria. +She remembers her love affair with Tony with wistfulness, while the younger Maria plays and dances. +The role of Maria has always fascinated me. +Firstly because it's musically unusual! +And then there's Maria's personality. +As she says in her song: "I feel pretty, oh so pretty, I feel pretty and witty and bright". +So she's clever, and naive of course, and full of passion. +"She's very like me, like my Italian personality as a girl from Rome," laughs Bartoli. +Dudamel is full of praise for the opera singer: "Cecilia is a wonderful artist." +We are so honoured to work with her. +She is an incredibly generous person. +And Bartoli returns the compliment: "Dudamel is such an exceptional artist and so passionate!" +For him, conducting is a need. +You see it in all his movements, his glances - it is his life! +It is such a great chance to be able to share this musical experience with him. +We both have a rather southern temperament, fire, passion, and we both approach life with joy, which is the most important of all! +For the American director Philip Wm. McKinley, "West Side Story" is bang up-to-date: "This work is all about prejudice and fanaticism." +Today we're dealing with the refugees, back then Puerto Ricans had gone to New York, and the residents of New York didn't want them there. +It's the same issues, and they were as significant then as they are today. +Fifty-nine years on, the work is still relevant. +London schoolgirl who joined ISIL killed in Syria +Kadiza Sultana, one of three British schoolgirls who left London last year to join ISIL, has reportedly died in Syria. +Attorney Tasnime Akunjee said her family learned of her death in Raqqa, Syria, a few weeks ago. +She was believed to have been killed by a Russian air strike in Raqqa, the group's stronghold in the country, ITV News reported on Thursday. +Sultana was 17 years old and, according to her family, died just as she was making plans to flee the war-torn country and return to Britain. +"One would hope that the only benefit out of this is - as a tombstone and testament to others, that these are the risks actually involved in going to a war zone - to dissuade people from ever making that choice really," Akunjee said. +In February 2015, Sultana and two other schoolgirls from east London boarded a flight to Turkey and then a bus to the Syrian border. +Sultana's family was told she married an ISIL fighter in Syria - and became a widow within months. +Reid says Clinton will stick with Garland as Supreme Court nominee if elected +Senate Democratic Leader Harry Reid says he is convinced that Democratic presidential candidate Hillary Clinton will nominate Judge Merrick Garland to the Supreme Court if she is elected president. +Senate Republicans have blocked Garland's confirmation since President Barack Obama nominated him in March. +Senate Majority Leader Mitch McConnell says the next president will choose the person to replace late Supreme Court Justice Antonin Scalia. +Reid said on a conference call Thursday that he is predicting Clinton will pick Garland "with some degree of credibility." +A spokeswoman for Reid later said he had not spoken to Clinton directly about whether she would nominate Garland and was speculating. +He praised Garland and said Clinton's team would not want to "rock the boat" with a new pick. +Garland is the chief judge for the U.S. Court of Appeals for the District of Columbia Circuit. +Reid said Republicans who are blocking Garland's nomination are "minions" and "enablers" of Republican presidential candidate Donald Trump. +He said Trump is unfit for office. +Treats says nude calendar for 'women, as well as men' +Treats magazine is partnering with photographer David Bellemere to launch a 1970s' Pirelli-inspired calendar for 2017. +But instead of famous naked people, they're setting out to find the next generation of top models for their 2017 NU Muses calendar. +Treats president Steve Shaw told us earlier this year that his nude-heavy magazine differs from old-school Playboys because "Playboy is for men." +I do this for women. +Apparently he thinks the calendar is, too. +"We need to get back to showcasing timeless and classic nudity where women, as well as men, feel comfortable and inspired by these images of the female body," Shaw said in a press release announcing the calendar. +Women will want to be a part of this project because it's a beautiful piece of art. +Models can submit pics online or in person at open casting calls in Los Angeles and New York. +Turkey: Kurdish community faces mass exodus +"If you don't change your tune and praise Erdogan, your suitcase is basically packed," says the President of the Gülen-supporting Dialogue and World foundation, Ercan Karakoyun. +The Kurdish community in Germany is expecting tens of thousands of people to arrive at short notice in search of protection, fleeing from Turkey to Germany. +In the medium term, this could even grow to "a few hundred thousand", believes Ali Toprak, President of the association. +The crackdown instigated by Turkish President Recep Tayyip Erdogan after the attempted coup has led the Germany Kurdish Association to expect a mass exodus to Germany. +"In the short term I'm expecting ten thousand, in the medium term a few hundred thousand people coming from Turkey looking for protection in Germany, if the Erdogan regime continues to antagonise minorities and democratic opposition," said the President of the Association, Ali Toprak, to "Die Welt" newspaper on Friday. +A few months ago the government initiated punitive action against Kurdish strongholds - and as a result, 500,000 Kurds are already on the run within Turkey. +After the unsuccessful coup, secular and oppositional ethnic Turks have been added to the list. +Many will want to seek a new start in Europe if they continue to suffer oppression in Turkey. +"It is unacceptable that a country that takes in refugees is also producing them," said Toprak. +The head of the Association complained about the deliberate relocating of Syrian Arabs in Kurdish and Alevi towns. +He thinks that Erdogan did this to encourage the remaining Kurds to leave. +"They are the last big minority in Turkey: the Christian Armenians and the Greeks have already been exterminated or driven out over the past hundred years," said Toprak, who is also a member of the CDU. +The head of the Association requested that the Federal Government acted "as harshly as Austria against Erdogan and his supporters". +A "witch-hunt" is also underway in Germany against those critical of Erdogan. +Over the past few months, I have no longer felt safe in Germany for the first time. +The German branch of the Gülen movement also fears that many Turks will flee abroad. +More Turks will seek asylum in Germany, especially Kurds and members of the opposition. +Being singled out as a Gülen-supporter is career-destroying for teachers and other academics. +"If you don't change your tune and praise Erdogan, your suitcase is basically packed," said the President of the Gülen-supporting Dialogue and World Foundation, Ercan Karakoyun, to "Die Welt" newspaper. +As the newspaper reports, using figures from the Federal Ministry of the Interior, even before the coup Turks were the largest group granted asylum in Germany on the grounds of political persecution. +On the reference date of June 30, this amounted to 11,386 people, almost 29 percent of all people entitled to asylum (39,625). +These figures do not include people who have fled war, poverty or a lack of prospects. +Under the constitution, only individuals suffering political persecution, i.e., on the part of the state, are entitled to asylum. +Mecklenburg-Vorpommern: "Go where it hurts" +Strange Mecklenburg-Vorpommern: Locals hear nothing about the summer elections - and holidaymakers from North Rhine-Westphalia are not allowed to vote for the state parliament. +In Mecklenburg-Vorpommern, they understood this. +In 2021 the state parliament elections will not take place at the end of the summer holidays, the Schwerin parliament decided at the start of the year. +The way things had been going was simply ridiculous: summer holidays, heat and state parliament elections - they clash with one another. +The locals who need to be won over by the candidates are on holiday. +Most holidaymakers in the state, in Usedom, Rügen or Hiddensee, are not locals - and are not allowed to vote for the state parliament. +There are also practical problems to consider: during the holidays, volunteers who put up signs, blow up balloons, distribute flyers and count the votes at the end, are hard to find. +Until 4 September 2016, election day and the last day of the holidays, people in Mecklenburg-Vorpommern must put up with one more election without the people being consulted. +The heated phase, if that can be said at all, has already begun. +And there's something at stake: Prime Minister Erwin Sellering, leader of an SPD/CDU coalition, is fearing for his seat. +The SPD, the strongest party since 1998, is now clearly behind the CDU, according to polls. +It will be exciting to see how Neuling AfD carves things up, and whether a coalition can be formed with what's left at the end. +Sellering, 66 years old and head of the parliament since 2008, pursued a rather inconspicuous election campaign, as can be seen from his posters. +He is travelling around the region, distributing roses and chatting a bit with people, just as his legendarily taciturn predecessor Harald Ringstorff did. +Apart from that, Seelering has got cold feet, blaming Chancellor Merkel for the rise of the AfD. +Her refugee policies, her "we can manage it" have accelerated the rise of the far-right, he believes - which will probably cost him his job. +The CDU and its top-level candidate, Minister of the Interior Lorenz Caffier, has already experienced what happens when you fight an election in the right place at the wrong time. +The CDU have invited Chancellor Angela Merkel to two mass rallies; Merkel's parliamentary constituency is in the north-east. +But the target group wasn't right: there were more people from North Rhine-Westphalia, Berlin and Saxony there than people from Mecklenburg-Vorpommern. +"The majority probably came from other federal states," Vincent Kokert, general secretary of the CDU in Mecklenburg-Vorpommern, complained to the NDR recently. +But it won't do any harm to anyone from other parts of Germany to listen to Angela Merkal for once. +Apart from that, the north-east CDU is generally dispensing with the normal election events with parasols and balloons in market squares and outside shopping centres. +According to Kokert, that will only play a "minor role". +The Union also noticed that they are losing their footing in the region, and will have to work hard to connect with the people. +They are suffering like the Left, the SPD, the Greens: hardly present across large swathes of the region. +The advice that CDU candidate Kokert gave to his competitors is revealing: "You have got to go where it hurts, or where the people are: village fetes, Golden Wedding anniversaries, you have to make use of every birthday party." +Sellering has already called his SPD to fight a particularly committed election campaign because there is so much at stake. +According to polls, the social democrats have 22 percent, behind their partners the CDU (25), and only fractionally ahead of the AfD (19). +In the 2011 elections, the SPD had a clear victory over the CDU (35.6 percent versus 22 percent). +The Greens, a small party with seven percent in the polls, should make the leap into the regional parliament. +They are making a modern virtue out of the holiday issue, and are waging their election war predominantly online. +"Online election campaign" is what the regional chairperson Claudia Müller has dubbed it. +Apart from that, the Greens are searching out local voters among the holidaymakers. +Silke Gajek, their top candidate, is currently crossing Mecklenburg's lakes on a houseboat - and is having a nice time. +Her view? "Having an election holiday in Mecklenburg-Vorpommern isn't all that bad". +B27 redevelopment: restaurants are suffering from the closure +There are hardly any problems with the speed at which the B27 is being redeveloped. +There is praise from all quarters for the people responsible for the construction works, which start at 5.30 a.m. and end at 8 p.m. +"They have done everything so speedily," Elvira Texlaff at the Jet petrol station explains. +That is a super team. +There are also no delays. +At the start of the week, the construction site could be moved southwards in line with plans, marking the half-way point, and everything is expected to be completed by October. +The obligingness of the people responsible for the construction works in terms of setting up substitute driveways. +Since the construction site was moved southwards on Monday, and the Aspegstraße in Ofterdingen was reopened, and the link to Rottenburg was re-established, the traffic situation within the town has improved. +Residents can now drive on both sides of the B 27 out of Ofterdingen. +There seem to be fewer drivers taking alternative routes through the town. +"There were some serious complaints made," said Florian King, deputy chief officer responsible for traffic management during the redevelopment. +Residents in Bachsatzstraße, Steinlachstraße, Hafnerstraße and Weiherrain had to put up with more traffic noise because people were looking for ways to cut through, trusting their satnav more than the signage. +This led to some lorries hurtling through residential areas. +The commune has increased calls for the measuring vehicle from Mössingen because speed limits were not always adhered to either. +"There were considerable infringements," said King, who had taken a look on-site to see what was going on. +Two to three vehicles were snapped by a speed camera every minute. +The fastest was travelling at 77 kilometres per hour in a 30 zone. +Since the construction site has moved on, things have quietened down. +This is only a small consolation for businesses located along the B 27 that the road has reopened for customers from Rottenburg. +Business people don't like to show their hand. +But nobody we questioned hid the fact that the B 27 redevelopment had led to a drop in profits. +However, some have been affected more than others. +People who have little to do with "end customers", i.e. if they make products for other companies, have hardly been affected by the redevelopment. +Even at the Maier car dealership, Thomas Sulz talked of "a slight loss, at the most", but also admitted that "there had been a lack of passing trade". +Bars and restaurants along the road had been the hardest hit. +J. Albert Göhner, owner of the Steakhouse (previously Krone), expressed himself clearly. +It has threatened our very existence. +It's not just him: all restaurants have been "hit hard". +Customers from Hechingen, Balingen and Rottweil stayed away. +We have to be happy about every euro of profit we make. +He reckons that profits slumped by "far more than 50 percent". +The road redevelopment "set back" his businesses "by two years". +He had to let half of his staff go. +If I had a company with 4000 employees and had to let half of them go, politicians would have reacted differently. +Instead, when Göhner asked the government's president, Jörg Schmidt, if there would be financial compensation, the president replied that the restaurant benefited already from its location on the B 27. And now it just had to deal with the disadvantages thrown up by the redevelopment. +Göhner knows of other districts where people have acted more generously. +Despite all the complains, Göhner is convinced that his restaurant will survive. +After all, the family business moved there back in 1715, he said, referring to its long history. +He can understand that his regular customers visit less as a result of the complicated traffic system. +If you can't drive past, other places are also nice. +Göhner has no doubt that his regulars will return once the redevelopment works have been completed. +Despite the crises with BSE and bird flu, Göhner believes that the effects of the B 27 works on his clientele mark the biggest crisis his restaurant has suffered in its long history. +Six months of construction works, that's brutal. +Law are constantly being passed in the name of anti-terrorism. +After the most recent attacks, Minister of the Interior de Maizière is now putting forward a host of security measures. +But what does residential status have to do with terrorism? +And what does the coalition partner have to say about it all? +Thomas de Maizière is playing the conciliator. +All his proposals are "politically reasonable" for the coalition partner, the Federal Minister of the Interior said when revealing his new security package. +They are not asking too much of anyone. +Other, more wide-reaching issues will first be discussed within the parties. +I will also be involved in that. +As Minister of the Interior, however, he is responsible for results, and for reaching an "achievable agreement" within the coalition, he says. +After the most recent attacks in Würzburg and Ansbach, de Maizière let a little time pass before announcing his conclusions for security within Germany. +However, they are more comprehensive as a result. +One thing was already known, announced, heralded: The fact that a new security agency is going to work on cracking encrypted communications is not new. +Neither is the fact that Germany will have to implement several EU directives on air passenger data and gun laws. +The call for more video surveillance and staff for security agencies also does not come as a surprise. +To some extent, de Maizière is launching a second attempt at proposals that the SPD long wanted nothing to do with: He wants to penalise advertising for terrorist groups, and remove German passports from jihadis with dual citizenship. +"They will be difficult issues for the SPD," admitted the CDU politician. +Despite this, he believes they are achievable, and is not demanding anything that has no chance with the coalition partner. +De Maizière also presented a few new ideas. +Some of them have a lot to offer: He is planning accelerated processes for deportation and more opportunities to arrest individuals prior to their deportation. +Refugees who are specifically brought to the country should allow their smartphones to be checked, and present their social media accounts for security checks. +He wants to reduce tolerance for people who have been refused asylum - such as those who commit crimes, or deliberately throw away their papers to conceal their identity. +Some of it is politically and legally tricky. +Some of it also seems half-baked, and leaves questions to be answered. +And for some points - such as the unequal treatment of tolerated persons - the following question is raised: What does that actually have to do with security and terrorism? +Yes, de Maizière says, it is important to differentiate between the issues posed by refugees, and the issue of terrorism. +But it cannot be denied that the perpetrators of the attacks in Ansbach and Würzburg were refugees. +In addition, many people are worried about security because of the large numbers of refugees. +And things that deeply worry people cannot be ignored - even during election season. +Domestic security has come to the fore to a huge extent. +First the attacks in neighbouring countries: Paris, Copenhagen, Brussels, Nice. +Then the attacks in Würzburg and Ansbach. +There is a large amount of uncertainty. +And yes, elections are looming. +The Union and the SPD are consequently focusing more and more on the issue of security. +Over the past few days things have been quite heated between the two parties. +First a nasty argument about the Federal Police Force's equipment, then about an ideas-gathering event for security and politics-related discussions between some Ministers of the Interior in the Union, at which a burka ban and the renunciation of dual citizenship were demanded by department heads. +De Maizière is also trying to strike a conciliatory note here. +He does not think that dual citizenship will be removed. +We have dealt with the discussions in Germany. +It would not make sense to reopen discussions on this topic. +And he thinks that a burka ban would come up against constitutional issues. +However, it remains to be seen whether his own package is in line with the constitution throughout, and whether it really is "achievable" for his coalition partner. +There are few things inside it that could cause problems. +But the SPD is also currently attempting to use the issue of domestic security to shape itself. +SPD Head Sigmar Gabriel showed that the party was happy to discuss the issue, albeit sensitively at first, saying that "the SPD is prepared to discuss anything that will increase security further." +Volkswagen gets off lightly. +Despite the diesel scandal, global delivery figures are increasing. +But things aren't quite as rosy in all markets. +The recall has led to fuss about one term. +Volkswagen's deliveries were more restrained in the second half of the year. +Thanks to its number of brands and some well-functioning markets, Europe's largest car manufacturer can boast another plus for the previous year, despite the diesel scandal. +However, in July, the VW core brand suffered, particularly in Western Europe, thereby affecting overall sales, as the Dax-listed company announced. +Globally, the VW brand sold 449,100 cars in July - 1.8 percent fewer vehicles than in the same month in the previous year. +In Western Europe alone, the second most important market after China, sales were 14 percent lower than in the same month the year before. +In its home market of Germany, deliveries plummeted by almost a sixth. +Head of brand sales, Jürge Stackmann, blamed July's poor figures on the loss of two sales days in Europe. +In addition, some key markets saw "changed economic climates", which led to fewer purchases. +In addition to the situation regarding the attempted coup in Turkey, the British vote to leave the EU had also had an impact, a spokeswoman said. +In the USA, where the emissions scandal first began, the books are once again in the red. +The Chinese market is a source of great support for VW. +In total, Lower Saxony's own brand, which was most affected, has got off lightly from the diesel scandal: After the first seven months, there is a minus in the books for deliveries amounting to 0.9 percent of 3.37 million vehicles. +Head of sales at the company, Fred Kappler, was once again able to bring out an increase in sales from January to July. +Volkswagen delivered 1.3 percent more vehicles in this time period, coming to a global total of 5.904 million. +Volkswagen had used software to manipulate emissions tests. +In Germany alone, VW has called 2.5 million vehicles back to workshops to be refitted. +In the course of modifying the vehicles VW emphasised that refitting them would have no negative effects. +After the vehicles have been modified, fuel consumption, CO2 emissions or motor performance would not get worse. +After modification, the car manufacturer will provide its customers with a certificate that is "as good as a guarantee" but would not talk of an actual "guarantee", as was mentioned on Friday in corporate circles. +Legal intricacies are the reason for this. +"Focus" reported that Volkswagen would provide its German customers with a guarantee for modified diesel cars nonetheless. +This was confirmed by VW representatives at the Federal Ministry of Transport on the Monday previous. +The Ministry of Transport confirmed that this meeting had taken place. +"VW must fully meet the requirements of my investigative committee and the KBA." +"Deviations will not be accepted," explained Alexander Dobrindt (CDU), the Federal Minister for Transport, according to the Ministry. +VW took on the guarantee that fuel consumption, CO2 emissions or motor performance would not get worse as a result of the modification, and all vehicle values relevant to type approval would remain unchanged. +Volkswagen itself does not use the term "guarantee", as has been mentioned in corporate circles. +Volkswagen believes that the broad term "guarantee" could see customers returning to the workshop with motor damage six months after the modification - and being able to blame this on the new software, even if the damage had nothing at all to do with it. +It is also in the customers' interest to prevent confusion with guarantee clauses for any other faults that have nothing at all to do with the emissions scandal. +This is why VW will not be using the term "guarantee". +The Raffeisen Bank in Gmund am Tegernsee will demand penalty interest from wealthy savers in the future - and it will be the second bank in Germany to do so. +Managing Director of the bank, Josef Paul, said on Thursday that "this only applies to 139 customers with 40 million euros in their current accounts or day-to-day accounts". +The Federal Association of German Banks believes this is an isolated case, and does not see it as a sign: normal savers "need not worry about being hit with penalty interest on the pennies they've put aside". +If banks invest money overnight with the European Central Bank (ECB), they have to pay penalty interest of 0.4 percent. +From September, the Raffeisen Bank in Gmund will be asking private and business customers with more than 100,000 euros in their current account or day-to-day account to pay this fee. +"The first 100,000 euros are free." +"In the future, any subsequent 100,000 euros will cost 400 euros a year," Paul said. +For some time, he has been managing 40 million euros that could be withdrawn any day, and that he is unable to make use of. +"The money has been sitting in my account at the Central Bank, and costing 0.4 percent," the bank CEO said. +"I cannot put 4000 euros aside for every million." +He is passing on the costs under the "polluter pays" principle. +It would be far too dangerous just to leave the cash in the Raffeisen Bank's safe: "I have already been through four raids, I don't want a fifth!" the bank's managing director said. +Most customers have been understanding, and have switched to other forms of investment. +Only a small number moved to other banks. +The Federation of Cooperatives of Bavaria explained that "the extreme monetary policy pursued by the ECG leads to all banks incurring significant costs". +It would be "impossible" for them to bear these costs "on a permanent basis, from a business perspective". +As a result, some German banks have increased the fees they charge for account management, credit cards or transfers. +Thuringia's "Volks- und Raffeisen Bank" in Altenburger Land hit the headlines in 2014 when their Skatbank branch imposed penalty interest on investments of more than three million euros. +Michael Kemmer, managing director of the banking association, said: "We are not expecting that private customers will all have to pay fees for investments - the competition between banks in Germany is much too strong for that". +A banker said that, in Tegernsee, there was "clientele who were rather better off in terms of assets." +"That can be a problem for a small bank," if the bank is looking after their money for free. +The Cooperative Bank of Gmund was founded in 1911, and has branches in Bad Wiessee, Rottach-Egern, Kreuth and Tegernsee. +Famous actors, sportspeople and enterpreneurs live in the region. +Spokesperson Ernst said that the Cooperative Association of Bavaria "was not currently aware of any other banks that ask private customers to reimburse their expenses". +The President of the Bundesverband der deutschen Volksbanken und Raiffeisenbanken (BVR), Uwe Fröhlich, said at the end of June that "the threshold for tipping into the red in terms of private customers is very, very high". +Competition is fierce, and there is the risk that investors will move to competitors. +Customers in Germany will not put up with that, broadly speaking. +Vinyl destination: who is actually buying records? +Lonely, middle-aged men love vinyl. +Before you rush to litter the comments section with gnarly insults under the pseudonym NotAllLonelyMiddleAgedMen, this statement derives from actual data. +According to YouGov, the much talked-about record resurgence is driven not by a boom in millennials who want to embrace the novelty of a physical item, but by midlife nostalgia. +Those who have recently purchased a vinyl album are most likely to be aged between 45 and 54, apparently. +In fact, those in the 18-24 age group are the least likely. +It is not just an act of hoarding by hobbyists, either - it has emotional significance: older vinyl buyers are slightly more likely to keep their feelings to themselves (56% versus 53%) and enjoy being alone (69% versus 66%). +But are YouGov's results true? +If this blog was a televised news report, the camera would follow me as I walked down the middle of a busy Soho street, wearing a modest grey suit and gesturing wildly before stopping, cupping my hands and saying something authoritative like: "So, let's take a look." +So, let's take a look. +While the heart of Soho is slowly being drained of its charm and grot - hotels, Eats, Prets and Paperchases now fill the buildings once occupied by independent sellers - a handful of fantastic specialist record shops still remain. +I'd probably ask the camera to stop rolling for the next bit, in which I stand very close to various men in some of these stores and attempt to gauge their age and emotional disposition via observation. +Glaswegian Stuart, 55, whom I follow from Sister Ray (data count: two young women, three middle-aged men) into Reckless Records (data count: eight middle-aged men, one woman, probably in her 20s) is in London for the afternoon for a meeting and is perusing the shops to fill a few hours. +Is he a collector, I ask? +"I suppose I am," he says. +I have about 3,000 or 4,000 records. +These records, pictured above (he emailed me the snap, I didn't follow him home), line his living room walls. +His reason for acquiring such a vast number of albums and singles is partly a result of his disposable income: he is now able to buy records he couldn't afford when they originally came out, and to repurchase items he sold when he was young and skint. +"A lot of the stuff I get is late 60s, early 70s, things that came out when I was 11 or 12, things I was probably a bit too young to get," he says. +He agrees that those who purchase records are more likely to be introverts who like their own company, adding: "I don't smoke, I don't drink very much. +It's my vice. +Wez, 25, who works at Sister Ray, also believes that many of the customers he encounters fit the YouGov profile. +He has, however, noticed a new wave of people influenced by the media hype, people who heard about the comeback and felt compelled to buy back their old records. +From conversations I've had, people have got rid of their collection, normally around 1998 or 1999. +Customers who once sold their vinyl to buy CDs are now selling their CDs to buy their records back," he says. +That may explain a boom in vinyl revivalists of a certain age. +But what about the alleged emotional importance of records? +It takes a few seconds in a shop such as Phonica to realise that record stores offer a comforting community of likeminded types. +According to Wez, some older customers have taken umbrage with the contactless payment system in particular. +Some vinyl fans may feel overwhelmed by the digital world and choose to retreat to the stability of the familiar record sleeve, of items that recall halcyon teenage memories. +"I think sometimes it can be filling a void or having material possessions as some kind of comfort," Wez says. +As a collector myself, I have that, and I think a lot of people do. +It's an easy way to occupy your headspace. +"We're like their social workers!" pipes up a co-worker from a stack of records. +An ICM poll in April revealed that almost 50% of people who bought a vinyl album the previous month had yet to listen to it. +The poll also found that 41% have a turntable they never use, while 7% of those who purchase vinyl don't own a record player. +At this stage of the news report, I would probably be looking gravely concerned while flicking through a stack of bossa nova compilations. +The "trophy" aspect of the revival is something that Jonny, 42, who works in Sounds of the Universe (data count: three midde-aged men) has noticed. +"Someone came in recently and said: "I don't have a record player, but I want to buy a Radiohead record so we can put it on our shelf,"" he says. +That's not a large percentage, but it's definitely happening. +More of the product side, less of the music. +We have people saying: "I don't have a record player." +That's younger people, not older ones, late teens who are just getting into it. +Fopp, which now dedicates almost an entire floor to vinyl, has a far more varied audience when I arrive. +There are couples in their 70s, tourists taking photos, teenage boys and middle-aged women. +While the atmosphere is less at ease than the aforementioned stores - Wild Beast's latest synth- and sex-fuelled pop, rather than noodling jazz, is blasting from the speakers - it is good to see diversity in its customers. +None of them look particularly lonely, but nagging psychological trauma is hard to ascertain by standing next to someone for 30 seconds. +Elanora, 27, has been walking around Fopp for a few minutes, looking at the variety of records on sale. +She is window-shopping, rather than on a spending spree. +She doesn't earn a lot, she says, so collecting records isn't really an option. +It costs a lot. +It's easy to listen to music by a computer or another way, but the beauty of vinyl is ..." she drifts off into a lovestruck sigh. +I don't know how to explain - it's really unique. +My last stop is a shop said to have inspired a fresh generation of vinyl lovers: Urban Outfitters. +While giving the illusion of perusing the denim hot pants, I observe a group of teenage girls, who cluster around the Polaroid cameras momentarily, before a dad and his daughter deliberate purchasing a Crosley record player. +To the left is a stairwell, a wall of which is stacked with records by Adele, Jeff Buckley, Amy Winehouse and Fleetwood Mac: a mix of contemporary and classics, the essential records for any average collection. +Nobody is looking - perhaps because they are merely decoration, some so high up the wall that it would be impossible to touch them. +It is pure "art vinyl." +But, given that any attraction to these items could mean more money for the industry and send a few customers into the depths of Soho for more, there is little to complain about. +It is no surprise that a demographic more likely than most to have more time and money than most is also the one that spends the most on luxury items such as vinyl. +But while my findings suggest YouGov's results are accurate, in Soho record stores at least, they do not discount the huge number of female collectors and vinyl lovers that exist in reality, in record shops and on online forums. +These people are probably working hard at school or in offices. +They are certainly not spending their Thursday mornings loitering around the record shops of Berwick Street, flicking through records and avoiding the gaze of a creepy, 30-year-old fake television presenter who is looming over the shoulders of unsuspecting middle-aged men. +Greenland shark is longest-living vertebrate animal - video report +Scientists say the Greenland shark has the longest lifespan of any vertebrate on the planet. +Julius Nielsen, who has been studying the sharks, says record goes to a female thought to be between 272 and 512 years old and is five metres in length +French court rejects bid to demolish shops at Jungle refugee camp +A French court has rejected a bid by Calais authorities to demolish dozens of makeshift shops and restaurants in the Jungle camp where thousands of refugees are living. +At a court hearing this week, Calais authorities had argued the state should be able to knock down a total of 72 makeshift shops where people inside the camp sell goods, from cigarettes to energy drinks, offer haircuts, or sell tea for 50 cents (40p) or basic meals for a few euros in makeshift restaurants. +The Calais prefect's office argued the places should be demolished because they represented a parallel economy that did not pay tax, and because they carried fire and sanitation risks. +Humanitarian groups had told the court the shops and restaurants were vital, saying the free meals offered by a state-backed association and other groups did not provide enough food for the growing numbers at the camp. +They argued the makeshift shops and restaurants often provided shelter and free meals to those in need. +A Lille court ruled there was no legal basis for expelling the people running the 72 makeshift shops, but said the Calais prefect's concerns "were totally understandable." +The judge, Jean-François Molla, said the groceries, cafes and restaurants played a much bigger role than simply feeding people that "live in extremely precarious conditions." +He said the spaces provided calm meeting points between refugees and volunteers. +One of the places that had been under threat from demolition was the camp's Jungle Book Kids" Cafe which is run not-for-profit and provides 200 meals a day, English and French classes, and asylum advice for the hundreds of vulnerable unaccompanied minors in the camp. +More than 170,000 people have signed a petition to protect the kids" cafe. +A letter sent to the Guardian said its closure "would be a catastrophe for these children, some of whom are as young as eight." +Two charities, Help Refugees and L'Auberge des Migrants, on Friday estimated that numbers in the Jungle camp have risen to over 9,000 people - the highest ever - after a steep increase in arrivals during the summer. +Despite Olympic disappointment, Martin keeps his fighting spirit +Despite his disappointing performance in the Olympic time trial, cycling professional Tony Martin will keep his chin up. +"I'm going to keep the World Championship in my sights, stay optimistic, and keep fighting," wrote the 31-year-old on Facebook on Thursday ahead of his journey home from Rio. +He was unable to provide an explanation for his poor finish in 12th place on Sugar Loaf Mountain. +"It's honestly hard for me to comment on my time from yesterday," said Martin. +He said he needed to reflect and analyse the reasons behind the debacle. +Martin had wanted to compete for the title at the time trial World Championship in Qatar in October. +"I'm going to take a real look at everything we've changed recently." +"This also includes my position," wrote the three-time time trial World Champion, who had lost to Olympic gold medallist Fabian Cancellara (Switzerland) by more than three minutes over the course of the 54.5km race on Wednesday. +Olympics: Tennis pro Siegemund misses out on the semi-final +Laura Siegemund's reign of success comes to an end in the Rio quarter-final: Ranked 32 in the world, the player from Metzingen will definitely miss out on the semi-final of the Olympic tennis tournament after losing 1:6, 1:6 against Monic Puig (Puerto Rico/WTA no. +34). +Sigemund, who has been struggling with back problems, was only able to hold her serve once, and seemed powerless in comparison to earlier rounds. +On Thursday, potential medallist Angelique Kerber (Kiel/no. 2) had the chance of making the semi-final. +The winner of the Australian Open faced off against Brit Johanna Konta (no. 10). +The last German tennis player to win was Tommy Haas, who took the silver medal in Sydney in 2000. +The last time there were two German tennis players in the quarter-finals of the summer games was in 1992. +There has never been a German-German Olympic semi-final. +Company gets involved in start-up for live video game streaming +Watching other people play video games is a huge trend - and Microsoft wants to profit from this too. +The technology company has purchased start-up Beam, which has specialised in this hobby. +On Thursday Microsoft did not announce how much many had been spent on the takeover. +Beam launched its programme in January, and already has more than 100,000 users. +They can watch other people play, and also get involved themselves. +For example, they can give players missions to complete and confront enemies, and provide equipment. +Games giant Activision Blizzard is launching a new HD video service for the booming world of e-sports. +Facebook is to help on the path to making them global media events. +The advertising industry has already pricked up its ears. +The start-up's employees, who were previously based in Seattle in the US state of Washington, will now move to Microsoft's headquarters in California's Redmond, Beam's co-founder and CEO Matt Salsamendi reported. +The takeover will not change anything for customers. +According to Microsoft, Beam will be integrated into the video games department that is linked to the Xbox console. +The market for live-streaming video games is currently growing rapidly. +Well-known platforms include Twitch and YouTube Gaming. +In 2014 Twitch was purchased by online retailer Amazon - for almost one billion dollars. +YouTube Gaming is owned by Google's parent company Alphabet. +Here comes the enforcement trailer +Germany's speeders will have to get used to the new generation of speedometers: In various federal states, including Hesse and Brandenburg, new speed cameras are being trialled, which are supposed to be particularly effective at catching those who drive too fast. +The futuristic-looking enforcement trailer made by Vitronic, a company form Wiesbaden, could be used at accident blackspots, for example, where it is too dangerous for the police to go. +For example, roadworks on a motorway, or a bridge that is due to be repaired, and therefore has a temporary speed limit often lack the infrastructure to support a fixed speed camera to ensure that speed limits are being adhered to. +It can also be too dangerous or expensive to keep assembling and unassembling the speed camera at these points. +The enforcement trailer is autonomous: its battery lasts for five days of continuous measurement, and data is transferred in encrypted form via a modem. +Thanks to laser measuring technology, all vehicles across several lanes can be tracked at the same time. +Variable speed limits and driving bans based on time, lane or vehicle type can also be monitored. +When powered up, the manufacturer says that any car with a trailer coupling can move the trailer. +To prevent it from simply being stolen, it sinks down when measuring, making its wheels disappear into the armoured, bullet-proof exterior. +In addition, the speed camera's in-built alarm system is designed to protect it from vandalism. +Since 2015, according to Vitronic, the trailer has been tested in various federal states and is now also used in them. +Foreign authorities are also using the new technology for speed cameras: recently France ordered 100 of them, after ordering 150 the year before. +Britain settle for silver in rugby sevens after Fiji masterclass sees them take gold +Great Britain's impressive run in the Rugby 7s was brought to a crashing halt at the final hurdle by Fiji in the final on Thursday night when they were comprehensively beaten 43-7 at the Deodoro Stadium here in Rio. +Fiji gave a masterclass in handling, off-loading, side-stepping, support play, running lines and brute strength to win gold - their first Olympic medal of any colour. +Defeat came with the non-too shabby consolation of silver - Britain's third of the day - and they could be proud of their efforts in the inaugural Olympic 7s tournament in which they beat New Zealand, Argentina and South Africa along the way. +The bruising beating of the Boks, 7-5 in the semi-final earlier in the day, may have come back to bite them in the final. +But, regardless, Fiji on this form would have beaten a fit as a fiddle 15-man team. +It may be some consolation to GB - but probably not - that at least one Briton will have a gold medal around his neck tomorrow: Fiji's head coach is Ben Ryan, the former England boss from Wimbledon. +It has been some journey for GB. +Eight years ago, under Ryan, they lost every game at the Adelaide Sevens. +Here, they lost just one. +This hammering will hurt but the progress is startling. +Fiji started magnificently, bouncing off GB tackles for fun. +It was like running into a series of moving buses for captain Tom Mitchell and co and the World Series champions went 5-0 up when Osea Kolinisau dived over in the corner. +With four minutes on the clock Jerry Tuwai added another down the right wing, which was converted. +12-0 and GB had hardly touched the ball. +A superb Mitchell tackle stopped the man-mountain Leone Nakarawa from scoring a third but it was only delaying Fiji. +On seven minutes Jasa Veremalua touched down in the right corner and GB were 17-0 to the bad. +Nakarawa added another from the restart and there was still over a minute on the clock ... in the first half. +Vatemo Ravouvou then burst through some more limp GB tackling and stormed to the line to score. +The conversion made it 29-0 at the break. +It was as if Fiji had been born to play 7s, while GB are still learning the trade. +Which is pretty much how it is. +GB made wholesale changes at half-time and they plugged the Fijian dam...for all of four minutes, which by first-half standards was good, until Josua Tuisova went over after some brilliant Fijian interplay. +Dan Norton grabbed a try for GB, touching down in the left corner to make it 36-7 but the game was long gone the way of the South Sea Islanders whose fans sang, waved flags and danced in the stands. +It was hard not to admire Fiji's whole joyful approach. +Mata Viliame iced the Fijian cake that didn't need icing with another try in the dying moments. +The whistle went, the Fijians embraced and GB hit the turf, thoroughly beaten. +Earlier in the day, Fiji had beaten Japan 20-5 in their semi-final and GB edged South Africa in a tight semi-final of one try each - Britain's conversion the difference. +Kyle Brown put the Boks ahead in the first half but Dan Norton with some dazzling footwork broke the line and scored under the posts in the second half. +A brilliant late tackle from Marcus Watson, brother of England's 15-aside team, Anthony, secured the win - and ultimately the silver medal. +Helen Glover and Heather Stanning inspired to rowing victory by coach's cancer battle +There will not be a more emotive gold at these games, and that is saying something. +From the first stroke to the last, 220 punishing heaves into history, Helen Glover and Heather Stanning found added meaning in their golden moment at the Estacio da Lagoa. +Though they were the two pulling on the oars, there were three voices in that boat, the echo of coach Robin Williams ever present as they powered to a second successive Olympic gold in the women's pairs, the first females in the annals of British sport to scale such a height. +Their dominance was absolute, after all this was their 39th outing unbeaten, again unprecedented. +What we see, two brilliant athletes skating over the surface with the elegance of swans, does not wholly reflect the nature of the triumph. +Behind every rowing gold is a battalion of willing hands contributing the incremental gains that make the difference, and no hands were more instrumental than those of a coach who 30 months ago did not know whether he would live to see this day when diagnosed with cancer. +As he said, it was touch and go. +I had bladder cancer which is one of the things they can operate on and they did. +If they don't it goes everywhere. +It would have been a pretty bad situation. +It alters your outlook a bit. +Williams was diagnosed in December 2013. +The trio were fortunate that he was able to begin his treatment at the start of 2014 out of season, keeping the disruption to a minimum, if that is ever the right expression in circumstances such as these. +I needed to get paid so I had to get better quickly. +It was an incentive. +I was in hospital and I was walking around the ward - 20ft, 30ft 50ft at a time when they were saying a few steps is enough. +That's how it starts off. +Rowing in itself is a journey but that makes it a bit bigger. +In the immediacy of victory their first thoughts were for Williams, who had spent a nervy morning talking a little more than usual in an attempt to process his own anxieties. +Stanning, a captain in the Royal Artillery regiment with a tour of Afghanistan behind her, said "I've been an emotional wreck this week, maybe that's a bit extreme, but it means such a lot." +It just reiterates how much this means to me, how much me and Helen have worked and Robin as well. +It's been a fantastic three years back with Helen and Robin. +Without Robin we would be nobody, so a massive thanks to him he's the best coach in the world. +I couldn't have asked for a better person to train with, or a better coach. +Helen Glover and Heather Stanning haven't lost a race in five years. +The pair set a punishing rhythm that their rivals could never match. +Even in the final 500 metres when the crews from New Zealand and Denmark began to close, Stanning and Glover had too much in reserve. +We were very much in the moment. +Helen was calling 'stay in the process, stay in the process'. +It's really important not to get carried away. +We had a good start and at the same time we weren't looking to do anything amazing. +We weren't looking for fireworks today, we were just looking to do a good row and to go out and win that race, which we did. +The pair will take a year before deciding their futures. +Glover has a wedding to attend next month, her own to television adventurer Steve Backshall. +For now she just wants to enjoy the moment. +I didn't want to say this was my last race. +That would have meant too much pressure. +In London it took about six months to realise that I was an Olympic champion. +It was all so new and I was so stressed. +Here it took about four minutes. +This feels so much better," she said. +Setting a clear example for 31 years +The Managing Director of the "Veitensteingruppe" Water Supply Association, Rupert Göller, is retiring. +The Assocation "sets an example for the entirety of Bavaria". +A small Franconian drinking water supply association as a role-model for the large water producers. +That was how the association was described in a segment on Bavarian radio. +A little later, the Water Forum of the government of Lower Franconia praised the Association. +The Veitensteingruppe's work was described as "setting an example for the entirety of Bavaria". +Rupert Göller is behind it all: he worked as an employee of the Association for 31 years, and has been its Managing Director for 28. +He has now gone into retirement at the age of 65. +The Veitensteingruppe Drinking Water Supply Association has its headquarters in Kottendorf in the commune of Breitbrunn, and provides 150,000 cubic metres of water annually, supplying 32 villages and hamlets with around 5,500 inhabitants. +The communes of Kirchlauter, Breitbrunn, Lauter, Ebelsbach and the municipality of Baunach are also members. +Water supply contracts are in place for additional municipalities and communes. +Current chairman, Breitbrunn's mayoress Gertrud Bühl (FW), looks back to when Ruper Göller was brought on as a water officer in 1985, and was promoted to Managing Director of the Association as soon as 1988. +"His tasks were very varied, ranging from constructing water pipes and performing maintenance work through to office and organisational tasks, budget planning, calculating fees and contributions, through to getting involved in emergencies at weekends," the chairman said. +She pointed out some exceptional successes, including commissioning and opening the new spring (1994), purchasing land near the new spring (1998), compensating farmers, renovating the elevated tanks (1999), creating a new computer management system (2004), and renewing some of the water pipes. +Things never stopped, and renovations were always underway: water means life, and drinking water is the most important foodstuff of all. +In her laudatory speech, she praised Göller's loyal, reliable, and upstanding service over 31 years. +He put his heart and soul into the Water Supply Association, and lived for it as if it were his own company. +A few weeks ago he gave a presentation at the Water Forum for the District of Lower Franconia as a true practitioner of the Veitensteingruppe's successful nitrate reduction concept. +He received considerable appreciation and praise for this. +For his part, Rupert Göller praised water officer Alfons Griebel, who had worked alongside him for 28 years. +He is the best water officer, and he was a loyal lad. +Together, we were an unbeatable team. +From his perspective, the high point was the construction of the spring and the restructuring of the Association. +However, the largest challenge and most difficult shift was when the pipe broke on the Kirchlauter elevated tank on 3 January one year. +We had to work through the night at minus 17 degrees to ensure the locality would be supplied with water. +Even the supply from the new spring was sometimes only maintained because the elevated tank at Pettstadt was filled by hosepipe. +The management of the Drinking Water Supply Association was passed to Daniel Stürmer from Lauter, who will be Rupert Göller's successor. +Soprano Anna Netrebko is open about her son Tiago's autism - and addresses other parents affected by the disease: "You must be brave enough to talk about it." +"Medicine has come a long way," the 44-year-old said to Italian newspaper "Corriere della Sera". +When her son was diagnosed with the disease, she thought she would die. +Tiago is now eight years old and has made great strides, being schooled privately in New York, where the best therapists are located. +"To give an example: If I ask him what happened two years ago when I sang at Milan's La Scala, he can't remember anything," Netrebko said. +But he is the happiest person on earth. +Tiago is the offspring of Netrebko's liaison with bass-baritone Erwin Schrott. +She is now married to tenor Yusif Eyvazov. +Crime passionelle in Bargteheide - man shoots his partner +A 35-year-old man shot and fatally wounded his partner on Friday around 10.45 a.m. in an apartment building in Bargeteheide (in the district of Stormarn). +"The man himself called up and admitted to having shot his partner," a police spokeswoman said. +The perpetrator is on the run, she said, and he is officially being sought. +This search is now happening across Germany, because Sven S. might be travelling by car. +The man is around 1.8 m tall, muscular, sun-tanned, and has a bald patch. +The police have now issued a photo of him. +But it is a couple of years old. +The man now has a bald patch. +The man should not be approached. +The police believe he may still be carrying a weapon. +Anyone who sees Sven S. should call 110. +The police are talking of a "crime passionelle". +The victim was apparently born in 1988, the perpetrator in 1981. +The police force in Lübeck dealing with the crime initially did not want to disclose any information on the crime or the relationship between the perpetrator and the victim, but it confirmed that a person had been killed. +"It is a homicide." +"We are not saying any more at this time," a police spokeswoman in Lübeck said. +According to eyewitnesses, a SWAT team was at the scene. +Steel - There's a ray of hope for the German steel industry +The German steel industry has been riddled with crises and uses a lot of energy - but it has been spared additional costs that could have run into the millions. +The sector had been threatened by financial burdens for the promotion of green energy, but these are now off the table. +Federal Minister of the Economy Sigmar Gabriel (SPD) told the "Westdeutsche Allgemeine Zeitung" (WAZ) newspaper on Friday that the exemption from the renewable energies levy would remain in place for electricity self-supply for pre-existing plants within the German steel industry. +"I am truly delighted by the fact that we have finally reached an agreement after two years of intense negotiations." +The European Commission had originally planned to make steel manufacturers, who use the gases from their blast furnaces to generate electricity for their own use, pay a levy. +According to the German association for the sector, the steel industry was threatened with additional costs ranging from 120 to 240 million euros a year. +Gabriel told WAZ that a basic agreement had now been reached with the EU Commission, following discussions with Margrethe Vestager, the Commissioner for Competition. +The EEG levy of 20 percent is now only due when the generators in the steelworks are replaced. +This too will not be levied against the steel industry. +IG Metall welcomed the agreement Germany had reached with the EU Commission on electricity self-generation. +The agreement sees the status quo of the previous ruling largely formalised. +Gabriel's positive efforts are particularly important for the steel industry. +"It is the first step within our "steel is the future" campaign." +"This needs to be followed by other steps." +"Climate targets and employment objectives also need to be taken into account during negotiations to reform emissions allowances," explained IG Metall's CEO, Jörg Hofmann, in Frankfurt. +Since the financial crisis of 2008, Europe's steel sector has suffered from overcapacities and considerable pressure in terms of pricing. +The situation only worsened over the past year when the world' biggest producer, China, dumped steel into the global market en masse as a result of weakening domestic demand. +European manufacturers accuse Chinese steel firms of price dumping. +The situation improved slightly during spring of this year. +On the one hand, import taxes started to have an impact on imported steel, on the other, economic prospects in China brightened up. +It is not clear how long prices will remain perked up for. +The German sector leader, Thyssenkrupp, was cautious on Thursday. +Prices had plateaued recently, he said. +The sector is reacting to the tricky situation by reducing prices further. +Thyssenkrupp also did not want to rule out closing individual plants. +At the end of 2015, around 86,000 people were employed in Germany's steel industry. +Despite rising prices and increasing orders, German steel manufacturers remained cautious in July. +At 3.4 million tons, they produced a good six percent less raw steel than in the corresponding month in the previous year, as the steel association reported on Friday. +After a brief spike in May, the amounts produced shrunk for a second consecutive month. +Since the start of the year, production has been two percent less than the value for the equivalent period in the previous year. +The association is expecting output to increase over the next few months thanks to an improved situation in terms of orders. +Community, mind, health: singing is good for the elderly +Singing has been a constant throughout Ursel Kipp's entire life: as a young girl she sang in her school choir, when she was studying to be a teacher she took music classes, and today, the 78-year-old sings in a choir for the elderly. +"Singing moves me - emotionally and physically," she describes. +After a rehearsal, she feels balanced, happy, and generally more alive, she says. +And additionally, she's doing something good for her health and her mind. +Singing is a great hobby for the elderly for a host of reasons, says Erhard Hackler from the German Association for the Elderly. +Most elderly people sing in a choir and share the enjoyment they get from music with like-minded people, says Hackler. +By regularly spending time with others, the elderly can build and maintain social contacts. +Social and familial structures often weaken as people grow older - so choir is a perfect way to spend time with other people. +Ursel Kipp has also experienced this in her choir: "Arranging and organising things with people, being able to rely on others and learn from them - a choir is a really unique way of being together with other people". +Singing can be demanding in the positive sense, Hackler thinks. +This is because it teaches the elderly to breathe deeply and in a controlled manner. +If you push your lungs to their limits regularly, you will not run out of breath as quickly in day-to-day life. +And if you are interested in keeping the sound of your voice as you age, too, singing is the perfect hobby. +Singing often has a really special effect on older people, says Ursula LEnz from the German Association of Senior Citizens' Associations. +For older generations, singing together is seen as more important, it was part of their daily life both at school and in their leisure time, she explains. +Lenz often sees that singing or listening to songs often triggers memories in older people that are often connected to positive emotions from their youth. +Song texts, and melodies in particular, can even be used to help patients with dementia to remember things from far back in their past. +Singing also demands particular mental exertion, explains Lenz. +Concentrating on one's own voice and a set rhythm, while adapting to the other singers - that is a huge cognitive challenge. +In particular, older people who live alone can practice how to focus on people other than themselves. +Another positive aspect is the recognition gained by singing in a choir, Hackler thinks. +A happy audience is great praise. +Even one's self-esteem is boosted by singing in a choir. +Being able to show yourself that by practising for a long time, you can improve and grow - this experience gives you strength. +So there are enough good reasons to start singing. +If you want to try a new hobby, don't delay - even if you think you've not got much talent, Lenz suggests. +You're not singing by yourself - and in a group of 50 people singing, who'll hear if a note's out here or there? +The elderly have many options when looking for the right fit, says Hackler. +If someone you know already sings in a choir for the elderly, you can just go along with them. +In addition, many towns offer an overview of the choirs in their region. +If you want to sing in a church choir, you can approach the parish or churchwarden directly. +Many choirs for the elderly can also be found online. +If you don't have access to the internet, you can ask your family, friends or neighbours to help you look things up online. +If you're interested in singing, you should absolutely join a choir, Hackler thinks. +Singing is good for the soul and is a kind of release - no matter how old you are. +Female cats react more sensitively than male cats to the mewls of their kittens +Biologists in Hanover have researched the effect kittens' cries have on adult animals. +To their surprise, the miaowing didn't leave the male cats unaffected - but, compared to their female counterparts, they always acted the same way. +Female cats can tell how agitated kittens are by their miaowing. +They react ten percent quicker to kittens who sound to be in great distress, the scientists from the Veterinary University and Medical University of Hanover discovered. +Male cats do respond to kittens' cries - but always to the same extent. +"It is clear that the acoustic differences between the miaows of kittens that are more or less agitaged are either imperceptible or unimportant for male cats," the biologists Wiebke Konerding, from MHH, said. +She is the first author of the study published in the "BMC Evolutionary Biology" specialist journal this Friday. +In a previous experiment the research team had already discovered that the duration and pitch of a kitten's miaow changes depending on how urgently they need help. +Nine adult male cats and eight female cats from the MHH's animal husbandry programme were examined. +Firstly, they were played the sound of a kitten who had been taken from the birthing box and separated from its mother and siblings for three minutes. +Then they were played the sound of a more agitated cat, which had also been lifted up. +Despite the low sample size, the researchers believe the results to be significant. +"All females, even those who did not have their offspring, were able to differentiate between miaows," said Konerding. +They turned towards the speaker quicker if it was playing the sound of a highly agitated kitten. +This ability may be innate, or may develop as the animal reaches sexual maturity. +"One surprise was that the male cats reacted at all," the biologist said. +In the past, scientists have researched women's and men's reactions to babies' cries on multiple occasions. +Even in this field a few studies showed that woman reacted more sensitively to infants, regardless of whether they had their own children or not, the biologist Marina Scheumann reported. +Podolski and "Gala" are shooting for the Supercup +Hakan Sükür is a football legend in Turkey. +An arrest warrant has been issued in Turkey for the former football star Hakan Sükür. +He is accused of being a member of a terrorist organisation. +An important football match is taking place in Turkey for the first time following the attempted coup. +Ahead of the duel between arch-rivals Besiktas Istanbul and Lukas Podolski's Galatasaray Istanbul for the Supercup in Konya, the official line is clear: "business as usual". +Even when announcing the state of emergency after the attempted coup in July, the government emphasised that this would not affect citizens' daily life. +This does not apply to those people suspected of being followers of the imam Fethulla Gülen, who is believed to be responsible for the attempted coup. +And this doesn't stop for football. +The state prosecutor has issued a warrant for the arrest of former star striker Hakan Sükür. +Sükür, who now lives in America, is accused of being a member of a terrorist organisation. +Sükür is accused of being a follower of the imam Fethullah Gülen, whom President Recep Tayyip Erdogan holds responsible for the attempted coup. +While the state of emergency, declared for ninety days, will continue until October, it is having practically no effect on the lives of most Turks. +On Wednesday, Erdogan announced that the night-time "democracy vigils" in public places across the country have come to an end. +The sport - like the entire country - is divided into those who support Erdogan, and those who do not. +Fans of the workers' club Besiktas, in particular, are not traditionally counted among the President's friends. +However, the strict rejection of military coups is what brings most Turks together, in the light of dramatic historical events. +And even the fans can agree on that - whether their hearts beat for Galatasaray or Besiktas. +For cup winners Gala, it will once again depend on Lukas Podolski. +The Cologne native has proved his sporting value over the last season: with 17 goals and nine assists across all competitions, the 31-year-old closed his first season as his club's top scorer. +In the final game against Fenerbahce, he scored the goal that led to a 1-0 victory. +The "Fanatik" newspaper praised him, saying "he was the best player on the pitch." +He finished the season in style, and secured the cup for his team. +Thanks to "Poldi", the disappointing season for the record-holders came to a happy end. +After their knockout in the heats for the Champions League, the "Lions" also left the Europa League early on. +They only reached sixth place in the Süper Lig. +The season was not good. +The cup was the only chance to win something. +"We did it - and that's the most important thing," said Podolski. +Winners Besiktas saw a better year of play. +This is mainly thanks to Mario Gomez, who laid the groundwork for their fourteenth title with 26 matches in the season as the Süper Lig's star goalkeeper. +This is also why fans are hoping that the 31-year-old returns. +Gomez, under contract at AC Florenz and only on loan to Besktas, announced after the attempted coup that he would not return to the country after his European Championship holiday due to the political situation. +"But if Mario wants to come here, all he has to do is say," "Kicker" specialist magazine quoted club chairman Fikret Orman as saying. +However, the star would have to be prepared to give up around a third of his annual salary, estimated at 7.5 million euros, as Orman made clear: "We cannot pay the salary that Florenz do". +Despite doping: These athletes are still in with a chance of winning medals in Rio +Justin Gatlin, aged 34, has already been banned twice for doping (in 2001 and 2006). +Rio de Janeiro - Whistleblower Julia Stepanowa is banned from taking her place on the start line. +Other track athletes who have been found guilty can only laugh - they are in Rio competing for medals. +The issue of doping continues to hit the headlines during the Olympic Games in Rio. +The Russian swimmer Julija Jefimowa, who appealed against her doping conviction shortly before the games to enable herself to compete, was booed and shouted at as she started her 100-metre breaststroke race. +It was a bizarre scene: She waltzed into the pool with a smile plastered on her face, a deliberately provocative entrance. +As it became clear that she would not take the gold medal, the audience cheered enthusiastically. +But there are many other athletes preparing to line up on the start line at the Olympic Games in Rio despite having been involved in doping in the past. +Here is an overview: +Justin Gatlin (100, 200, 4x100m relay/USA): The 34-year-old is one of the most controversial track athletes. +He has already been banned twice for doping (in 2001 and from 2006 to 2010). +Since being banned, the 2004 Olympic champion and former World Champion is running faster than ever before: covering 100m in 9.80 seconds, he is the world number one, and is Usain Bolt's major challenger. +Shelly-Ann Fraser-Pryce (100, 4x100m relay/Jamaica): The two-time Olympic champion and seven-time World Champion was handed a six-month ban in 2010 after she was proved to have taken Oxycodone. +The 29-year-old defended herself by saying she had suffered with bad toothache after an operation. +Sandra Perkovic (discus/Croatia): in 2011, the 2012 Olympic Chamption, 2013 World Champion and 2010-2016 European Champion tested positive for the banned stimulant methyhexaminine. +Perkovic said that she had not knowingly taken the drug, and was banned for six months. +This year's four longest throws were by the woman tipped for gold. +LaShawn Merrit (200, 400 4x400m relay/USA): Champion at the Beijing Olympics and two-time 400m World Champion, Merrit tested positive in 2010 and was banned for 21 months. +Merritt claimed that a penis enlargement drug was to blame. +This year, the 30-year-old is the fastest man in the world in the 200m and the 400m. +Ivan Tichon (hammer, Belarus): There is hardly another athlete who has been retrospectively stripped of so many medals. +Tichon lost his 2005 World Championship title nine years later after he was proved to have been involved in testosterone doping. +Now 40 years old, he was also stripped of his 2004 Olympic silver medal for doping with steroids, and his 2006 European Champion title for testosterone misuse. +His bronze medal from the 2008 Olympics was also taken away, but it was returned to him following a decision by the International Court of Arbitration for Sport, CAS. +With 80.04m he is at second place in the global rankings. +Liu Hong (20km walking, China): The world record holder and favourite to win gold tested positive as far back as May, but will still be on the start line in Rio. +The 29-year-old world champion revealed traces of a banned dietary supplement, but the World Anti-Doping Agency (WADA)'s ban was lenient, and ended as early as July 13. +Bomb terror in Thailand - One Austrian woman injured - Several dead +The Austrian Embassy in Thailand is in contact with the woman, Thomas Schnöll, the spokesperson for the Foreign Ministry, said early on Friday morning. +She has some cuts, he says, and was treated in hospital, but has already been able to leave hospital. +She plans to return home at the start of September. +It is currently unclear whether other Austrian citizens have been affected by the other explosions on the holiday island of Phuket or in the southern cities of Surat Thani, Phang Nga, Trang and Chumpon. +According to Schnöll, the Foreign Ministry is in constant contact with local authorities as a result. +Hua Hin, located around 200 kilometres south of the capital city, Bangkok, two bombs went off in the nightlife district on Thursday evening. +According to police reports, a Thai woman was killed and around 20 people injured, including the Austrian woman, three Germans, three people from Holland and three Italians. +There were another two explosions early on Friday morning, with another person killed, according to the authorities. +A bomb explosion was also reported in Phuket early in the morning. +Police reports state that a taxi driver was injured in the explosion, which occurred near Patong beach, popular with holidaymakers. +Another bomb exploded in Surat Thani on the country's south-east coast, which led to the death of a civil servant. +According to the authorities, the explosive device was launched from a flower bed on the edge of the coastal police's territory. +Finally, explosions in Phang Nga and Trang on the south-west coast and in Chumphon on the south-east coast caused several casualties. +There is apparently a connection with the explosions in Hua Hin. +"The bomb attacks bear the same signature," said Army General Danai Kritmethavee to journalists early on Friday morning. +"We are assuming that the attacks were coordinated". +It is too early to speculate on possible motives, he says - however, it is probably the actions of Muslim rebels. +The Thai media also wanted to see a pattern in the attacks that was typical of Islamic separatists in the south of the country. +However, the Thai police issued a statement that the attacks were not connected with the Islamist resistance movement or with global terrorism. +"It is just local sabotage, limited to particular areas and provinces," said a spokesperson in Bangkok. +It is more reasonable to assume that the bombs were set off by opponents of the military junta currently ruling the country. +Over the past few days, the authorities have received notification from the security services about attacks planned in the south of the country - but they do not know when and where exactly the attacks are planned for. +It is still apparently unclear who is behind the attacks. +The police told civil servants across the entire country to increase security around important governmental buildings, along with airports, railway stations, tourist attractions, restaurants and nightlife districts. +Small-scale bombings are a frequent occurrence in Thailand, but they are rarely directed at tourists. +There is a palace in Hua Hin that was used by Thailand's King Bhumibol Adulyadej for years. +After the recent bomb explosions, the Austrian Foreign Ministry has issued a recommendation on its homepage that Austrians follow the instructions from the Thai security agencies at all times. +The provinces of Narathiwat, Yala, Pattani and Songhkla, along with Preah Vihear and its surroundings, have been issued with a high security alert (security level 3). +After skirmishes between security forces and Muslim sectors of the population, people are advised against all but essential travel to these districts. +The rest of the country is on an increased security alert (security level 2). +The attacks on Thursday and Friday came just a few days after a controversial referendum on a constitution drawn up by the military junta. +This will give the military large-scale influence even in the years to come. +The Head of the junta, and Prime Minister, Prayut Chan-o-cha said that the bombs were an attempt to create chaos when the country was heading towards stability, an improved economic climate and tourism. +The military junta took power in 2014 after a period of bloody unrest, and believes that it has led the kingdom back to stability and order. +However, the military has not managed to quell the latent resistance brewing with Muslim rebels in the southern edges of the country. +More than 6,500 people have been killed in the conflict so far. +A little under a year ago, 20 people were killed in an attack on a popular Hindu shrine in Bankok - the majority of whom were foreign tourists. +It was the most bloody attack in the country's recent history. +The Federal Office for the Protection of the Constitution has the right-wing "Identitäre Bewegung" movement in its sights. +After several regional authorities had done so, the body charged with protecting the constitution across Germany has also put the group on a watchlist. +"In terms of the "Identitäre Bewegung" movement, we can see clear indicators of efforts against the free, democratic order," said Hans-Georg Maaßen, head of constitutional protection, to the German press agency in Berlin. +Muslim migrants or migrants from the Middle East were vilified in an extremist manner. +That is why we will also be monitoring the movement from henceforth. +The "Identitäre Bewegung" is a group with French roots that has been active in Germany since 2012. +It fights against "multicultural madness", "uncontrolled mass immigration" and "the loss of national identity through foreigners". +Bodies protecting the constitution across nine federal states - Bremen, Bavarian, Hesse, Berlin, Baden-Württemberg, North Rhine-Westphalia, Lower Saxony, Saxony and Thuringia - already have the "Identitäre" under observation. +Maaßen said that his authority had worked closely with regional authorities to come to its decision. +"Groups such as the "Identitäre Bewegung" are trying to approach their target group on their level," said the head of constitutional protection. +In general, extremists attempt to speak to them in young people's own language, often with pop music. +Radical Islamists and right-wing extremists both do this. +It's not calm advertisement for the actual matter at hand. +This propaganda is designed to provoke an emotional response in people. +Young people are particularly vulnerable to this. +This is dangerous. +Recently, there have been reports from several federal states pointing out contact between members of the "Identitäre" movement and AfD politicians. +Maaßen said he had no information on this. +In terms of constitutional protection, potential contact of this kind only becomes relevant from a certain point, he says. +It depends on whether the party in question - in this case, the AfD - changes its focus and becomes extremist as a result of particular people who are extremists. +Therefore, the decisive factor is whether these people exert a controlling influence over the party. +This has not been noted. +With regard to the clear increase in right-wing crimes and attacks on asylum seekers and refugee shelters, Maaßen said that he would not yet speak of a new right-wing terrorism. +But, over the past few years, we have determined that right-wing terrorist structures can exist. +There was the "Old School Society" group or the "Freitaler Group". +It can absolutely be the case that additional right-wing terrorist groups or small gatherings come to exist, and plan attacks on asylum seekers, refugee shelters, or for other far-right motives. +However, there is no Germany-wide or Europe-wide control of far-right terrorism that we can discern. +The groups that have existed to date have arisen on a regional level or via social networks. +Maaßen expressed concern that many attacks were perpetrated by people who had previously not been involved in the far-right scene. +That is frightening. +Many of those suspected of carrying out the attacks on asylum centers were not viewed as criminals, politically motivated perpetrators or members of the far-right scene. +"This means that many people have committed crimes who previously paid the far-right no heed, who might have been politically indifferent or voted for the CDU, SPD or the Left, who were then radicalised by far-right sensationalism". +Rio 2016: Robel Kiros Habte becomes an Internet sensation +Olympic athletes or world records aren't always the only things to hit the headlines at the Olympic Games. +This is shown by Robel Kiros Habte's brave performance at the summer games in Rio de Janeiro. +In the Aquatics Centre, the slightly overweight swimmer from Ethiopia swam so slowly that, sometimes, it was impossible to see him in the televised images. +He just disappeared - no matter how wide a perspective was used. +Habte finally become a viral internet sensation on social networks. +The 24-year-old completed his heat 48 seconds slower than the next-fastest competitor, taking place 59 out of 59. +However, it was his not-quite sporty figure that caught the eye of the international media. +Why was the 24-year-old taking part in the Olympic games? +The Ethiopian was given special permission to take part by the international swimming federation. +This is given out to popularise swimming in underrepresented countries. +Because most athletes from Ethiopia run, Habte wanted to do something different. +Preparation is everything: Robel Kiros Habte prepared himself for the big race. +The first nicknames were soon doing the rounds. +Some media outlets dubbed him "Robel the whale". +With reference to his "flabby stomach", the British tabloid "The Sun" mocked his "Dad Bod". +His time, almost one minute and five seconds for the 100 metre freestyle, played no part in this. +Comparisons were also made with "Eric the Eel". +At the 2000 Olympic Games in Sydney, Eric Moussambani's race also drew media attention. +The performance of the swimmer from Equatorial Guinea was unforgettable: he had to swim his 100 metre freestyle heat all on his own. +Moussambani was then greeted by wild cheering. +He was 22 years old at the time, and had learnt to swim eight months before the Olympics - and had never managed such a long distance before the competition began. +A front-row seat to the stunning architecture of the Los Angeles Central Library +Learn more about the history of downtown's Central Library as the Society of Architectural Historians/Southern California Chapter hosts a salon with Arnold Schwartzman and Stephen Gee, authors of the new book "Los Angeles Central Library: A History of its Art and Architecture" . +Gee and Schwartzman are scheduled to discuss and share images of the 1926 Bertram Goodhue design as well as the 1993 restoration and addition by Hardy Holzman Pfeiffer Associates. +The salon is set for 2 p.m. to 4 p.m. on Aug. 21 in the Salle Moderne at the Art Deco Southwestern School of Law, (formerly Bullocks Wilshire), 3050 Wilshire Blvd. +Attendees can tour the Central Hall, Period Rooms, Cactus Lounge and Tea Room. +Advance tickets are required; SAH/SCC members, $15; non-members, $25. +An open, industrial loft in DTLA gets a cozy makeover +Celebrating L.A.'s Central Library's 90th birthday with - what else? - a new book +Geretsried - Theft from the owner of a shop on the Neuen Platz. +According to the police, the 67-year-old woman from Geretsried left her shop around 5.30 p.m. on Monday, and forgot to close a ground-floor window. +When she returned the next morning at around 8.15 a.m. around 250 euros was missing from the till. +There was no trace of the perpetrator. +The shop did not have CCTV. +Trump is not taking the threat of election defeat too seriously +The Republican candidate for the presidency, Donald Trump, spoke out at an election event in Florida. +If things don't work out with the presidential election, Donald Trump already has a plan B in place. +He would go on holiday. +Donald Trump wouldn't really mind if he lost the US presidential election in November: "Either it'll work out, or I'll go on a long, long holiday," the Republican candidate said in an telephone interview with US television channel CNBC. +If he doesn't make it because of political correctness, that's ok, Trump said. +For example, he called US President Barack Obama, and the Democratic candidate, Hillary Clinton, the founders of terrorist militia Islamic State (IS). +Within his party, resistance continues to grow. +The postal service gets on board with electric vehicles +Detusche Post's electric truck in action. +Other companies are clearly interested in the vehicle. +The postal service is also planning to sell its StreetScooter electric vehicle. +Soon the company will start retailing the vehicle. +The postal service wants to bring its electric vehicle to the free automotive market from next year. +"We want to start selling it to third parties," a postal service spokesman said on Friday. +For months the company has been examining whether the StreetScooter it developed, which is used to deliver letters and parcels, could be sold to other sectors as well. +Managing Director of the postal service Jürgen Gerdes said that there was always demand from tradesmen. +According to information in "Der Spiegel", a news magazine, the Bonn-based company will soon start mass production of the vehicle. +The company is planning to use its own factories to build up to 10,000 vehicles per year, per level. +Gerdes announced that the company wanted to increase the size of its fleet of electric cars considerably, and that its long-term aim was to switch over completely to these environmentally friendly vehicles. +"We will take a very, very strong step towards 2020," he said at the end of July. +I can imagine that we will switch over the entire fleet. +The StreetScooter has been out and about on Germany's roads since 2014. +GfK managing director steps down after disappointing figures +Consumer research firm GfK is replacing its managing director Matthias Hartmann. +His resignation came swiftly - but it was not a complete surprise. +The tricky situation in which market research firm GfK finds itself made it self-evident that Managing Director Matthias Harmann's seat became more and more unstable the longer the success he promised failed to materialise. +Turbulence at the top of Nuremberg's market research firm GfK: After another round of disappointing figures and the resignation of the managing director, the firm, fifth in its sector globally, is on the brink of a personal new start. +GfK's managing director wants to leave the company at the end of the year. +The managing director of GfK's supervisory board, Arno Mahlert, has already announced that he will be leaving the supervisory committee with effect from 12 September. +The company announced that Gerhard Hausruckinger, who is currently a member of the board of directors, will take over the management of the board on 1 September. +Officially, he will take on the role of "board spokesman" until Hartmann's successor has been found. +The company cited "different viewpoints" on long-term business direction as the reason behind the resignation. +A company spokesman did not give further details on Friday. +It is currently not clear who will head up the market research firm in the future. +In investment circles, on Friday it was said that shareholders were greatly disappointed by the lack of success following the restructuring programme implemented years ago. +Mr Hartman has headed up GfK since 2011. +"The benefits of the restructuring programme will only become visible after 5 years," he said. +As a result of GfK's recent poor figures, every shareholder would be a little unsettled, he said. +"If that were the case at BMW, the quants would be too," he said. +After suffering losses in the previous quarters, the company was unable to stop losing money in the second quarter of 2016. +At 361.2 million euros, turnover was 6.1 lower than it had been in the same quarter of the previous year. +Compared to the first six months of the year, turnover (721.2 million euros) had shrunk by 3.4 percent. +The company's reduced value because of the difficult economic climate had impacted second-quarter profits, in particular. +The goodwill amortisation of 139 million euros required for the consumer experience sector was provided by the company, leading to a final loss of 148.2 million euros. +In the second quarter of 2015, GfK had made a profit of 19.7 million. +Incident - Bus slips into a ditch in Krummhörn: eight people injured +On Thursday, an accident involving a coach carrying 43 elderly people in Krummhörn (district of Aurich) led to eight people being injured. +Two of the passengers suffered serious injuries, the police reported. +The 66-year-old bus driver, employed by a coach company based in Eisenach, said that she had to swerve to avoid an oncoming lorry that was partly on the wrong side of the road. +The bus came off the right-hand side of the road, and skidded into a ditch, a spokeswoman for the police force of Aurich/Wittmund reported. +"As a result of the way the bus was positioned, people were not able to leave the bus on their own," she said. +The fire brigade freed the passengers. +Six rescue vehicles and an ambulance were in attendance at the scene of the accident on the no.2 road. +Uninjured passengers were transported back to Krummhörn's Pewsum district by regular bus. +They waited there until a replacement bus was sent by the coach company. +Investigators are asking the lorry driver and any witnesses to make themselves known to the police. +From 1 October 2016, fees per cubic metre of sewage for the area covered by the sewage plant at Neudorf/Reuth/Welschenkahl will be 3.44 euros instead of 2.10 euros as previously, 3.36 euros (previously 2.26 euros) for Zultenberg/Lindenberg/Lopp, and 3.64 euros (previously 2.18 euros) for Azendorf. +The sewage fee for the sewage works in Azendorf will be raised again if it is necessary to carry out improvement works. +According to an estimated calculation, sewage fees in Azendorf will then come to 4.37 euros per cubic metre. +As mayor Bernd Steinhäuser (CSU) reported, when the district administration of Kulmbach approved the budget, it was determined that these sewage plants were underfunded. +The market town of Kasendorf is legally obliged to run the sewage works so that they break even. +From 1 October 2016, individuals and commercial and industrial enterprises from Welschenkahl, Neudorf, Reuth, Azendorf, Lopp, Lindenberg and Zultenberg will have to dig a little deeper. +The fee increases range from 48 to 67 percent. +As administrative director Herbert Schmidt showed the committee, it was necessary to recalculate the fees for the sewage plants serving the market town. +Between October 2016 and September 2020, overfunding and underfunding from the previous calculation period will be balanced out. +Schmidt justifies the major fee increases by saying that all three sewage plants are relatively small and deal with a very small amount of waste, namely between 6800 and 12000 cubic metres a pear. +As a result of the low distribution, expenses for critical repairs amounting to several thousand euros, for example, seem major. +In addition, the amount of sewage arriving at all three plants is gradually decreasing. +Furthermore, the previous calculation period did not include renovation and repair works to a great extent for all three treatment plants, not least because of their age. +The plant in Azendorf is nearly 30 years old, the plants in Welschenkahl, Neudorf and Reuth, as well as Zultenberg, Lindenberg and Lopp are almost 20 years old. +Schmidt pointed out that the waste treatment plant at Azendorf needed to have its mechanical ventilation system replaced because of damage. +The conveyor system in the pumping station at Welschenkahl is almost 20 years old, and needs to be completely overhauled; the first clarification pond in the pond treatment plant at Lopp has been operational for almost 20 years and now needs to be dredged, its sewage sludge removed, and an additional ventilation system incorporated to ensure that it will be in line with water law regulations in the future. +Schmidt: "These extraordinary expenses were also coupled with perpetual support and maintenance costs that are to be taken into account in the new calculation period." +The same is true for electricity costs: in the previous calculations for 2011/2012, they are far below their current levels. +Steinhäuser pointed out that, even with a low amount of sewage coming to the three plants, the expenses for running and maintaining them "were significantly impacted". +As a result, Schmidt expanded, the market town had been saved from large maintenance costs for the sewage treatment plants over the past 20 years. +From Steinhäuser's perspective, the plants mentioned will remain in a precarious situation in the long run, especially as the area covered by Friesenbachtal wastewater association cannot be expanded to include these plants because they are running at a deficit. +Bulgaria Posts Inflation for 1st Time in 8 Months +Inflation in Bulgaria was 1% on a monthly basis in July, national statistics show. +This is the highest value in years (since June 2012) and the first one above zero since October of last year when a positive 0.2% was posted. +The annual average inflation, measured by CPI, in the last 12 months (August 2015 - July 2016) compared to the previous 12 months (August 2014 - July 2015) was -0.8%. +The consumer price index in July 2016 compared to June 2016 was 101.0%, i.e. the monthly inflation was 1.0%. +The inflation rate since the beginning of the year (July 2016 compared to December 2015) has been -0.2% and the annual inflation in July 2016 compared to July 2015 was -0.2%. +In July 2016, compared to the previous month, an increase was observed in the price of the following groups of consumer goods: food and non-alcoholic beverages (1.7%); transport (1.8%); recreation and culture (6.3%); restaurants and hotels (1.2%); miscellaneous goods and services (0.3%). +Prices decreased in clothing and footwear (2.2%); furnishings, household equipment and routine maintenance (0.5%); health (0.1%). +Prices remained at the same level as in the previous month in alcoholic beverages and tobacco; housing, water, electricity, gas and other fuels; communications; and education. +Snapchat "Anime" Effect Is Criticized as Asian Caricature +Snapchat says this filter is inspired by anime, but some observers say it's racially insensitive. +With its lens tool, Snapchat allows some 150 million daily users to alter reality and play with identity in ways that border on the absurd. +You can turn yourself into a pineapple, a dog or a character befitting a Roy Lichtenstein painting. +The lenses are blunt, feature-warping tools that generate more than 30 million enhanced selfies a day. +Any missteps quickly enter the public record. +Snapchat lenses have drawn criticism in the past with accusations that the app was promoting blackface or encouraging whitened skin tones as an ideal of beauty. +So when it pushed a lens to some users this week that gave them slanted eyes, distorted teeth and puffy cheeks, some critics called it a racist caricature of Asian people - "yellowface." +And they wondered if these repeated controversies pointed to a larger problem that the company has with diversity. +The news and the outrage went wide on Wednesday, with reports by The Verge and Motherboard, a day after Snapchat said it had dismantled the feature. +The company offered an explanation: The lens was meant as homage to anime characters, not as a caricature of Asian people. +But for observers who have experienced racism, the lens reminded them of hurtful stereotypes in action. +Others roundly rejected the anime comparison. +In an email, Grace Sparapani, a Korean American art student whose tweet about the photos was widely shared, said that the lens was "hurtful and uncomfortable to say the least." +She added that "it's hard to argue with the side by side comparison of the very gross Asian caricature and the filter's effects. +It shows that the filter isn't just yellowface, but yellowface taken to its derogatory extreme. +Snapchat is not the only company to cross these cultural tripwires. +American culture seems involved in an endless struggle over diversity and inclusion, from corporate boardrooms to Hollywood and the devices we all carry in our hands. +And Snapchat's huge audience of younger people - who are more racially diverse than their older counterparts - might mean that they are even more likely to expect sensitivity. +When one of Snapchat's lenses creates an image that is insulting to a user, 25-year-old Katie Zhu said in an interview on Thursday, "it's much harder for these types of things to go unnoticed like they did before." +On Thursday, Ms. Zhu, a product manager and engineer who works for Medium, decided to delete her Snapchat account and encouraged others to do the same. +In an essay for Medium and in a telephone interview, she said she believed that the race-related controversies reflected a lack of diversity in hiring practices at Snapchat. +Ms. Zhu criticized the company's mostly white, all-male leadership and ended her essay with a hashtag: #DeleteSnapchat. +"It's either that they had no diverse representation of people of color on their staff to the point where they're able to make decisions like this," Ms. Zhu, who is Chinese-American, said, "or they do have some people of color who are working there, but they're not on positions where they feel safe or comfortable to speak up." +Other observers share her view, a complaint that Snapchat has left largely unanswered. +The company does not release figures about diversity on its staff, noting its status as a private company. +On Thursday, Snapchat declined to discuss the racial backgrounds of its staff, but according to a spokesman, the company recently hired a recruiter to focus on underrepresented populations and on driving inclusion efforts internally. +For her part, Ms. Zhu said she would keep her Snapchat account closed, adding, "I wonder if they actually need more users like us to be able to say that this is not O.K." +Military Officials Distorted ISIS Intelligence, Congressional Panel Says +Officials from the United States Central Command altered intelligence reports to portray a more optimistic picture of the war against the Islamic State in Iraq and Syria than events on the ground warranted, a congressional panel said in a report issued Thursday. +The interim report, from a task force established by the Republican chairmen of the House Armed Services Committee, Intelligence Committee and Defense Appropriations Subcommittee, found "widespread dissatisfaction" among Central Command intelligence analysts, who said superiors were doctoring their assessments of American efforts to defeat the Islamic State. +Central Command, known as Centcom, is the military headquarters in Tampa, Fla., that oversees American military operations across the Middle East and Central Asia. +"Intelligence products approved by senior Centcom leaders typically provided a more positive depiction of U.S. antiterrorism efforts than was warranted by facts on the ground and were consistently more positive than analysis produced by other elements of the intelligence community," a news release about the report said. +"What happened at Centcom is unacceptable - our war fighters suffer when bad analysis is presented to senior policy makers," said Representative Ken Calvert, Republican of California. +The leadership failures at Centcom reach to the very top of the organization. +The 10-page report detailed persistent problems in 2014 and 2015 in Central Command's description and analysis of American efforts to train Iraqi forces. +Although it offers no definitive evidence that senior Obama administration officials ordered the reports to be doctored, it describes analysts as feeling as though they were under pressure from Centcom leaders to present a more optimistic view of the threat posed by the Islamic State, also known as ISIS or ISIL. +"Throughout the first half of 2015, many Central Command press releases, statements and congressional testimonies were significantly more positive than actual events," the report said. +For example, a Centcom official stated publicly that a major military assault to take back Mosul could begin as early as April or May 2015. +Mosul, Iraq's second-largest city, remains under the control of the Islamic State. +"After months of investigation, this much is very clear," Representative Mike Pompeo, Republican of Kansas, said in a statement. +From the middle of 2014 to the middle of 2015, the United States Central Command's most senior intelligence leaders manipulated the command's intelligence products to downplay the threat from ISIS in Iraq. +Republicans created the task force after learning that analysts had raised concerns that intelligence about the Islamic State was being manipulated. +The report released Thursday is to be followed up by more extensive findings as the investigation continues. +There is an additional, ongoing investigation of Centcom intelligence by the Department of Defense inspector general. +Democratic members of the House Intelligence Committee released their own findings on Thursday that agreed with some of the conclusions of the Republican task force. +"Between 2014 and 2015, Centcom created an overly insular process for producing intelligence assessments on ISIL and Iraqi Security Forces," Representative Adam B. Schiff, the committee's top Democrat, said in a statement. +This process, Mr. Schiff said, "stalled the release of intelligence products," hurt morale among analysts and "insufficiently accommodated dissenting views." +But Mr. Schiff and the Democrats said they found no evidence that the White House tried to pressure Centcom analysts to fit their conclusions to a "preset or political narrative." +The preliminary results of the congressional investigation were reported Tuesday by The Daily Beast. +Last August, The New York Times reported the existence of the Pentagon inspector general investigation, opened after complaints by Centcom analysts. +Lt. Cmdr. Patrick Evans, a Pentagon spokesman, said in a statement that the Defense Department would not comment on the congressional report while the inspector general's investigation continued. +But he said that "experts sometimes disagree on the interpretation of complex data, and the intelligence community and Department of Defense welcome healthy dialogue on these vital national security topics." +The investigation has repercussions beyond the question of whether the American-led bombing campaign in Iraq and Syria is succeeding (an assertion now made by a growing number of Defense officials). +But last year's allegations called into question how much President Obama could rely on Central Command for honest assessments of military operations in Iraq, Afghanistan, Libya and other crisis spots. +The critiques on the Islamic State intelligence mirror disputes of more than a decade ago, when a Centcom intelligence analyst, Gregory Hooker, wrote a research paper saying that the administration of President George W. Bush, over many analysts" objections, advocated a small force in Iraq and spent little time thinking about what would follow the 2003 invasion. +Mr. Hooker also played a key part in the insurrection over the Islamic State intelligence. +Last year, officials said, Mr. Hooker's team concluded that despite public statements to the contrary, airstrikes against Islamic State-held refineries had not significantly weakened the terrorist group's finances because it had built makeshift refineries to sell oil on the black market. +But the finding was not distributed outside Central Command, The Times reported in September. +Centcom's commander then, Gen. Lloyd J. Austin III, came under criticism last year after Senate testimony viewed by many lawmakers as being an overly positive assessment of the war. +General Austin retired in April and was replaced at Central Command by Gen. Joseph L. Votel. +U.S. Wins 4th Straight in Women's Field Hockey, Setting Up Showdown With Britain +One day after scoring three goals in a 6-1 victory over Japan, Katie Bam scored the first two goals for the United States women's field hockey team on Thursday as the Americans defeated India, 3-0. +Five goals in two games should be a memorable feat, but Bam, 27, said she was not sure if she had ever done the same thing. +"I have no clue," she said. +I'm not really one of those people who keeps track of their goals. +Here is what she does know: The Americans are 4-0 in the Olympic tournament and are tied for first place in their group with Britain, which remained unbeaten after defeating Japan, 2-0, on Thursday. +Britain and the United States will meet on Saturday in the last game of the first round. +Both teams have qualified for the quarter finals, and the game will decide who finishes first in their six-team bracket and who finishes second. +The first-place finisher will avoid the powerful Dutch, the leaders of the other bracket, for a bit longer when the quarter finals begin. +However Saturday's game turns out, the Americans have created a stir with their surprising run here, four years after finishing last among 12 teams at the London Games. +Bam was on that team. +She grew up in Blue Bell, Pa., first picked up a field hockey stick when she was 3 (her twin older sisters played the sport at Drexel) and joined the national team when she was 16, becoming its youngest player ever. +She missed out on the 2008 Olympics when she did not make the cut for the final roster. +Then came 2012, when nothing much went right for her and her teammates. +The next year, Craig Parnham, an Englishman, was named the coach, and things began to change. +"A cultural change, a mental change, a physical change," Bam said. +We didn't have the work rate in London that we have now. +We've made a complete turnaround. +On Thursday night, Bam opened the scoring in the first half with a backhand shot from close in. +India had come into the game without a victory in the tournament, but the team proved surprisingly tough and kept the score 1-0 until late in the third period, when Bam took charge. +She made a long run with the ball down the left side of the field, then curled into the middle and whipped the ball into the goal to give the Americans a 2-0 lead. +Melissa Gonzalez added the final goal midway through the fourth period. +The shutout was the first of the tournament for the United States goalie, Jackie Briggs, who had allowed one goal in each of the first three victories. +She is on a roll. +So is Bam. +"We're in a good place right now," Parnham said, but just how good it is will depend on the result of Saturday's game. +Amid the Fury of the Olympics, the Zen of the Trampoline +Wherever you are, whatever time it is, it is the Olympics. +The events in Rio de Janeiro feel constant and inescapable, a furious relay of competition and striving. +It is as if the Olympic torch itself were a flaming baton, passed from archer to swimmer to gymnast to triathlete. +You can't turn on a television, read a newspaper or listen in on your neighbor's conversation in a coffee-shop line without hearing about Simone Biles, Katie Ledecky or the feud between Michael Phelps and Chad le Clos. +And then there is Logan Dooley. +Mr. Dooley, a first-time Olympian and a dimpled heartthrob in the making, may well be among those household names being showcased in prime time, buoyed by sponsorships and feel-good TV commercials, if he were a swimmer, a gymnast or even a fencer. +But Mr. Dooley, 28, of Lake Forest, Calif., is competing for the gold in Olympic trampoline. +The Olympic flame does not illuminate each event equally. +Further from the center, partly in shadow, are those sports not universally acknowledged: air-pistol shooting, archery, badminton, taekwondo. +We will always have the breaststroke, and long may it reign. +But if I may make a modest case for my particular favorite, let me call attention to the discreet charm of the trampoline. +Though trampoline has been an Olympic event since 2000, when it debuted at the Sydney Games, it has spent the intervening 16 years so barely acknowledged that many I surveyed did not realize it was an Olympic sport at all. +This may be a regional ignorance. +Despite sending athletes to compete, the United States has never won a medal in trampoline and did not have an athlete advance to the finals until 2012. +The Chinese and the Russians tend to split the prizes for the men, and the Chinese and the Canadians for the women. +Dong Dong of China and Rosie MacLennan of Canada will be defending their London gold medals this year. +But there is an underdog charm to trampoline, in part because it sounds, to the unenlightened ear, fitter for clown college than the Olympics. +Here I should confess that I am no expert, just an earthbound enthusiast. +It does have comic potential - the cartoon quaver of its never-ending bounce - but also the grace of gymnastics and diving, the two sports it essentially combines. +The word "trampoline" derives from the Spanish el trampolín, meaning "diving board." +Aspiring champions jump on a giant trampoline, shooting up to nearly 30 feet in the air, and are called upon to perform a series of tumbling moves (twists, pikes and somersaults) before eventually landing on their feet. +They are judged on execution, difficulty and "flight time," according to the official Olympic program. +Thirty-two athletes from 17 countries, 16 men and 16 women, will compete in Rio. +The most common Olympic vector is straight ahead. +Medal hopefuls must go farther, faster, up and over, in their quest for gold, sometimes to the finish, other times back and forth up and down the court. +They are chasing not only the finish line or the starting wall but also, in the televised coverage, another taunting line: that of the world, or Olympic, record. +This single-minded pursuit is noble, admirable, even fanatic - and it is enough to bring even a spectator to tears. +But it is also what I find slightly exhausting about even watching the Games. +From this, trampoline offers a respite. +The trampoliner's vector is up. +Forward motion is not the goal. +He or she rebounds, seeming weightless as an astronaut, going up, then down, then effortlessly up again. +It is not without competition, of course, nor without difficulty, but for the duration of a routine, there is no frantic charge toward the end, no vaulting into the distance, just the dreamy, graceful suspension of time and gravity. +It is as close to Zen as Olympic competition gets. +The women's qualifiers and then finals will take place on Friday afternoon, streaming at 1 p.m. Eastern time; the men's on Saturday, also at 1. +NBC will air the finals as part of an afternoon block beginning at 2 p.m. on both days. +In the midst of Olympic mania, they promise a quiet, lovely moment, one likely to be overlooked in the general melee. +And if consciousness raising is to be achieved only by offering up male athletes for ogling and objectification - as the United States men's gymnasts recently proposed, according to The Wall Street Journal - Mr. Dooley only awaits his gasping new fan base. +"A Generation Is Protesting" in Ethiopia, Long a U.S. Ally +Violent Protests in Ethiopia +Demonstrators demanding political change in Ethiopia have been met with violent resistance by the government. +Witnesses say that scores of protesters have been fatally shot during clashes with police. +Is Ethiopia about to crack? +For the last decade, it has been one Africa's most stable nations, a solid Western ally with a fast-growing economy. +But in recent months, anti-government protests have convulsed the country, spreading into more and more areas. +In the last week alone, thousands of people stormed into the streets, demanding fundamental political change. +The government response, according to human rights groups, was ruthless. +Witnesses said that police officers shot and killed scores of unarmed demonstrators. +Videos circulating from protests thought to be from late last year or earlier this year show security officers whipping young people with sticks as they were forced to perform handstands against a wall. +The top United Nations human rights official is now calling for a thorough investigation. +"It was always difficult holding this country together, and moving forward, it will be even harder," said Rashid Abdi, the Horn of Africa project director for the International Crisis Group, a research group. +Ethiopia is the second most populous nation in Africa, after Nigeria, and its stability is cherished by the West. +American military and intelligence services work closely with the Ethiopians to combat terrorist threats across the region, especially in Somalia, and few if any countries in Africa receive as much Western aid. +Ethiopia's economy has been expanding at an impressive clip. +Its infrastructure has improved drastically - there is even a new commuter train in the capital, Addis Ababa. +And its streets are typically quiet, safe and clean. +Though Ethiopia has hardly been a paragon of democracy - human rights groups have constantly cited the government's repressiveness - opposition within the country had been limited, with dissidents effectively silenced. +Many have been exiled, jailed, killed or driven to the far reaches of the desert. +But that may be changing. +"If you suffocate people and they don't have any other options but to protest, it breaks out," said Seyoum Teshome, a university lecturer in central Ethiopia. +The whole youth is protesting. +A generation is protesting. +The complaints are many, covering everything from land use to the governing coalition's stranglehold on power. +After a widely criticized election last year, the governing party and its allies got the last seat the opposition had held and now control 100 percent of the Parliament. +At the same time, tensions are rising along the border with Eritrea; a battle along that jagged, disputed line claimed hundreds of lives in June. +Analysts fear that separatist groups that had been more or less vanquished in recent years, like the Oromo Liberation Front or the Ogaden National Liberation Front, may try to exploit the turbulence and rearm. +Several factors explain why bitter feelings, after years of simmering beneath the surface, are exploding now. +The first is seemingly innocuous: smartphones. +Only in the last couple of years have large numbers of Ethiopians been able to communicate using social media as cheaper smartphones became common and internet service improved. +Even when the government shuts down access to Facebook and Twitter, as it frequently does, especially during protests, many people are still able to communicate via internet proxies that mask where they are. +Several young Ethiopians said this was how they gathered for protests. +Second, there is more solidarity between Oromos and Amharas, Ethiopia's two largest ethnic groups. +Oromos and Amharas are not natural allies. +For eons, Amharas from Ethiopia's predominantly Christian highlands flourished in politics and business, exploiting the Oromos, many of whom are Muslim and live in lowland areas. +But that is changing as well. +"We are on the way to coordinate under one umbrella," said Mulatu Gemechu, an Oromo leader. +The biggest protests have been in Amhara and Oromo areas. +Many Amharas and Oromos feel Ethiopia is unfairly dominated by members of the Tigrayan ethnic group, which makes up about 6 percent of the population and dominates the military, the intelligence services, commerce and politics. +The third reason behind the unrest is the loss of Meles Zenawi. +Mr. Meles, a former rebel leader, was Ethiopia's prime minister for 17 years, until his death from an undisclosed illness in 2012. +He was considered a tactical genius, a man who could see around corners. +Analysts say he was especially adept at detecting early signals of discontent and using emissaries to massage and defang opponents. +"The current regime lacks that ground savvy," Mr. Abdi, the conflict analyst, said. +Ethiopia's new prime minister, Hailemariam Desalegn, was plucked from relative obscurity to fill Mr. Meles's shoes. +Unlike Mr. Meles, who came from the Tigray region of northern Ethiopia, Mr. Hailemariam is a southerner. +Analysts say he does not have the trust of the Tigrayan-controlled security services. +The result, many fear, is more bloodshed. +The last time Ethiopia experienced such turmoil was in 2005, after thousands protested over what analysts have said appeared to be an election the government bungled and then stole. +In the ensuing crackdown, many protesters were killed, though fewer than in recent months, and that period of unrest passed relatively quickly. +Development experts have praised Ethiopia's leaders for visionary infrastructure planning, such as the new commuter train, and measurable strides in fighting poverty. +But clearly that has not stopped the internal resentment of Ethiopia's government from intensifying. +And it is taking a dangerous ethnic shape. +Last month, protesters in Gondar, an Amhara town, attacked businesses owned by Tigrayans, and anti-Tigrayan hatred is becoming more common in social media. +Analysts say the protests are putting the United States and other Western allies in an awkward position. +The American government has used Ethiopia as a base for drone flights over neighboring Somalia, though it recently said it closed that base. +While the West clearly wants to support democracy, it also does not want its ally in an already volatile region to crumble. +"That," Mr. Abdi said, "is a very tight rope to walk." +Donald Trump Explains His Obama-Founded-ISIS Claim as "Sarcasm" +Donald J. Trump tried to quash the latest controversy engulfing his campaign on Friday by claiming that he was not serious when he insisted several times this week that President Obama and Hillary Clinton were the "founders" of the Islamic State terrorist group. +The clarification raised new questions about the Republican presidential nominee's ability to communicate clearly to the American public. +It also put his surrogates, who have strained to defend him during a tumultuous stretch, in the awkward position of having to explain remarks that he might not mean. +After making the suggestion at a rally on Wednesday night, Mr. Trump doubled down on the assertion on Thursday, insisting in interviews that he really did intend to say that the president and Mrs. Clinton had created ISIS. +But in an early-morning Twitter post on Friday, Mr. Trump said that he was just being sarcastic. +The post was a reversal from just a day ago, when Mr. Trump said in a number of interviews that he was indeed serious about the charge. +When the conservative radio host Hugh Hewitt tried to help Mr. Trump soften the remark by reminding him that Mr. Obama wants to destroy ISIS, the Republican presidential nominee would not have it. +The latest firestorm comes as Mr. Trump has been trying to refocus his campaign on the economy amid declining poll numbers. +Mr. Trump and Mrs. Clinton gave dueling economic speeches in Michigan this week. +On Friday, Mr. Trump tried again to return to that subject. +Taking again to Twitter, he warned that Mrs. Clinton's proposals would come with higher taxes and he said that he found her speech boring. +Mr. Trump has used the sarcasm defense before. +In late July, after he drew widespread criticism by appearing to suggest that the Russians should hack Mrs. Clinton's emails, he later explained his remarks by saying, "Of course I'm being sarcastic." +The approach allows Mr. Trump to push the limits of political speech and dial it back as needed. +"I think it's a pattern of him testing certain messages that resonate with his fans, seeing how they play, and then "clarifying" one way or another depending on the reaction," said Ruth Sherman, a communications expert who has been monitoring the language used by both candidates. +But I also think he's clever about his statements and knows they are vague enough to be filtered through various lenses. +Instead of toning things down for a general election audience, Mr. Trump has taken an even more caustic tone in recent days as his poll numbers have continued to tumble. +A new NBC/Wall Street Journal/Marist poll released on Friday showed Mr. Trump trailing Mrs. Clinton by large margins in North Carolina, Virginia and Colorado and locked in a tight race in Florida. +While Mr. Trump generally tries to avoid apologizing for provocative things that he says, he often accuses his critics of misconstruing his words or misunderstanding his sense of humor. +But as he faces heightened scrutiny during the final months of the presidential campaign, Mr. Trump's jokes have put his loyal allies in the uncomfortable position of having to publicly stand up for him no matter how provocative his remarks. +Rudolph W. Giuliani, the former New York City mayor who is one of Mr. Trump's most prominent surrogates, went to great lengths to defend the candidate in an interview with CNN on Thursday. +"I think what he's saying there is legitimate, political commentary," Mr. Giuliani said when questioned about the veracity of Mr. Trump's assertion about Mr. Obama and Mrs. Clinton having founded the Islamic State. +It is true in a sense that before Obama, ISIS was an almost unknown, small little organization, he who called it the jayvee, totally wrong, and here's why it happened, because he withdrew the troops from Iraq. +Most mainstream Republicans try to argue that the Obama administration, in which Mrs. Clinton served as secretary of state, allowed ISIS to fester by failing to aggressively manage the situation in the Middle East. +Ahead of rallies in Pennsylvania on Friday, Mr. Trump continued to lash out on Twitter at the news media for harping on his every word and for being biased against him. +He mocked the "poor, pathetic" television pundits who try to figure him out and said, "They can't!" +Some Democrats scoffed at Mr. Trump's excuse as more evidence that he is unfit to be president. +Once Priced Out, a Cafe Returns in Greenpoint +Verb Cafe was a shabby, cash-only space in Williamsburg that had no Wi-Fi but served good coffee for 15 years. +Naturally, it got priced out of its Bedford Avenue storefront. +The store that replaced the Verb in the summer of 2014, Soap Cherie, sells soaps in the shape of cupcakes. +Locals bemoaned it as the latest loss in a gentrifying city. +The artist Molly Crabapple wrote on Twitter, "New York is change, I know, but still, can't believe CBGB's is dead and the Chelsea Hotel is gutted and Verb is now a soap shop." +But if New York is change, it is also reinvention. +A revived Verb Cafe opened last November in Greenpoint, less than a mile north of the original location. +The new Verb has Wi-Fi and accepts credit cards but has some of the same employees and a similar unpretentious vibe. +The coffee is still good, too. +Leading the new Verb is Cisco Rodriguez, a longtime employee at the old cafe who is an owner and the general manager at the new place. +He started at Verb in 2001 and was there until the end. +When a customer offered to bankroll him in a new outpost, he said he was excited to do it. +Mr. Rodriguez, 36, kept a lot of things the same. +Verb uses the same distributor for the bagels and bought the same model of espresso machine. +It even reused the lights from the old Verb. +But Mr. Rodriguez said he also wanted to experiment. +He introduced new ingredients. +Bacon-egg-and-cheese sandwiches are on the menu, and toppings like capers and sautéed onions are available. +There are brown-rice bowls. +The cafe no longer serves beer but now makes fresh juices. +Nine months in, Mr. Rodriguez said he had noticed a steady stream of old regulars. +"A lot of former customers got priced out of Williamsburg too," he said. +On a recent Sunday, Rebecca Oliveira was one such customer. +Ms. Oliveira, 34, used to live in Williamsburg and went to Verb frequently. +Even after she moved to Greenpoint, she would still make the trek. +After Verb closed, she said, she gave up drinking coffee for a while. +"I realized it was the coffee and the culture at Verb that I liked," she said. +Now she's back on coffee, although that day, instead of her usual iced coffee, she went with a blended chai drink, another new addition. +Tom Rosenthal, another longtime customer, went faithfully to Verb starting in 2003. +He'd go before work and order the same thing without fail. +"Quarter past seven, every day, like clockwork, I'd come in and they were making my everything bagel with butter," he said. +Photo Mr. Rodriguez said he wanted to experiment and introduced new ingredients to the menu. +These days, Mr. Rosenthal still gets his regular order, but sometimes he'll switch things up with the bacon, egg and cheese on an everything bagel. +Mr. Rodriguez said he had no hard feelings about the soap shop taking over the old space. +In fact, the Soap Cherie owners offered to make special soap for Verb, using the cafe's cold-brewed coffee as an ingredient. +"I think we still might take them up on it," Mr. Rodriguez said. +And Greenpoint's traditional Polish residents have embraced the cafe as well. +One of these new customers translated the menu into Polish, and Mr. Rodriguez said he planned to find a spot to display it soon to make his new neighbors feel welcome. +The new location has other perks. +A local juice spot wants to bottle and sell the cold-brewed coffee. +There is a chance the cafe will expand into an adjacent building. +For many customers, a new Verb to get their old favorites is enough. +Joseph Whitt was a regular and said he was heartbroken when they closed. +When the new space opened, Mr. Whitt said, walking in and getting a coffee felt like a homecoming. +"I've needed to smell that," he said. +The Depressing Food of the Depression, in "A Square Meal" +In March 1933, shortly after ascending to the presidency, Franklin Delano Roosevelt sat down to lunch in the Oval Office. +A gourmand, President Roosevelt had a taste for fancy Fifth Avenue foods like pâté de foie gras and Maryland terrapin soup. +His menu that day was more humble: deviled eggs in tomato sauce, mashed potatoes and, for dessert, prune pudding. +"It was an act of culinary solidarity with the people who were suffering," Jane Ziegelman said. +Her husband, Andrew Coe, added, "It was also a message to Americans about how to eat." +The couple, who live in Brooklyn Heights, are food historians. +Mr. Coe's last book, "Chop Suey," was about Chinese cuisine in America, while Ms. Ziegelman told the story of life in a Lower East Side tenement through food in her book "97 Orchard." +Their new, collaborative work, "A Square Meal," which will be published Tuesday by Harper, is a history of American food in the Great Depression. +Showing some culinary solidarity of their own, they met a reporter for dinner at Eisenberg's Sandwich Shop, a tiny no-frills lunch counter in the Flatiron district that has been in business since the year of the crash, 1929. +Ms. Ziegelman, 54, ordered a cream cheese and chopped olive sandwich, while Mr. Coe, 57, had the turkey, mashed potatoes and vegetable medley. +When a reporter ordered meatloaf, the couple deemed it fitting for a discussion of Depression-era eating. +"Loaves were very popular," Ms. Ziegelman said. +There was peanut loaf, liver loaf, bean loaf. +They were made from an ingredient and a cheap thing that stretches the ingredient out. +Imagine eating enough peanuts to serve as your dinner. +Mr. Coe grimaced. +"It must have sat in your stomach like lead," he said. +In the years before the Depression, the American table, especially in rural areas, was an all-you-can-eat buffet. +Teams of women cooked for male farmworkers, and fresh-baked pie was served at breakfast, lunch and dinner. +It was Americans who had sent food to starving Europeans during World War I. "A Square Meal" chronicles the ways the nation coped with suddenly not being the land of plenty. +"This was a time when food became a central, fraught subject for the American people," Mr. Coe said, explaining why he and his wife wanted to write about it. +Equally fraught was the new budget diet: Mystery dishes like loaves and casseroles became staples, the casserole a "wonderful way to repurpose leftovers," Ms. Ziegelman noted, because cooks could hide unappetizing ingredients under a creamy coating of sauce. +Fresh fruit was replaced with cheaper dried fruit. +Meat, for years the center of the American meal, became a sparingly apportioned luxury. +Strange mashups were tried as caloric and nutritional fulfillment took precedent over taste or even common kitchen sense. +In researching the book, which includes recipes, Ms. Ziegelman prepared a period dish of baked onion stuffed with peanut butter. +"It was not a popular addition to the dinner table," Mr. Coe said. +Ms. Ziegelman amplified: "It was surreal." +Peanut butter has nothing to say to a baked onion. +It was characteristic of a lot of the home-ec recipes. +As never before or since, home economists - among them Louise Stanley, chief of the federal Bureau of Home Economics from 1923 to 1943 - drove the country's eating habits. +Publishing recipes and articles in newspapers and magazines, they encouraged women to become "budgeteers" and rise to the challenge of transforming glop like creamed spaghetti with carrots into tasty dishes. +"A Square Meal" is a feast of historical tidbits. +Especially savory are the accounts of the government's response to its hungry citizenry, like President Herbert Hoover's let-me-eat-cake attitude. +While he publicly praised the simple Iowa farmhouse cooking of his childhood, he dined like the millionaire sophisticate he had become. +"He liked to eat Continental cuisine, like fish with cucumber sauce," Mr. Coe said. +He ate in almost a gold-plated dining room, wearing a dinner jacket. +He was fabulously out of touch. +President Roosevelt may have committed the same error if his wife, Eleanor, had not encouraged him to set an example with his stomach. +As the book tells it, Mrs. Roosevelt's hiring of a housekeeper with no interest in flavor resulted in a White House that "put out not only some of the dreariest food in Washington but also some of the most dismally prepared." +Many of the Depression-era food ways were abandoned as soon as the country got back on its feet. +The legacy is in our continued focus on calories and nutrition, Ms. Ziegelman said, and on the way science has been applied to cooking. +The couple said that in writing the book, they gained greater understanding of the eating habits of Ms. Ziegelman's mother - how she couldn't throw food away, for instance. +"She had a real fear of food waste," Mr. Coe said. +Ms. Ziegelman recalled: "She actually got people sick." +There was the cream-puff incident. +After the plates were cleared at Eisenberg's, she and Mr. Coe pulled out a dessert they had prepared at home: the prune dessert that President Roosevelt ate for lunch. +"It's called prune whip," Ms. Ziegelman said, adding that a common trick was to give modest recipes a snazzy name. +There was no whipped cream, just prunes, a little bit of flour, sugar, water and cinnamon. +Everyone reluctantly dipped a spoon into the viscous brown goo. +Surprisingly, it wasn't bad. +Mr. Coe went back for seconds, and thirds. +Sounding like a can-do budgeter, he told his wife, "Some chopped walnuts would help." +Killed in a bomb attack: He was the hero of Aleppo +He put his own life at risk to help others: Khaled Omar. +He was the hero of Aleppo: Khaled Omar dedicated his life to the Syrian people. +He risked everything to save other people's lives. +Now the 30-year-old has been killed in a barrel bomb attack by the Assad regime. +Omar was a member of the "White Helmets", a civil protection group which, according to Bild newspaper, had saved the lives of 60,000 people. +2,900 volunteers put their own lives at risk to pull people from bombed-out houses and perform first-aid in the war zone. +They are the heroes of the war in Syria. +Omar was the face of the group: A video of the civil protection volunteer showing him during an 11-hour operation to rescue an infant from the ruins of a house went viral in 2014. +It made the Syrian a glowing figurehead amidst the horror of the war. +However, he never saw himself as a hero, saying, according to Bild: "For me, this is the real jihad." +"If I were to die saving lives, I would think that God saw me as a martyr." +Shortly before Omar himself became a victim of an attack, he had spoken in a video about the recent bomb attacks on Syria. +Helicopters had released four barrel bombs over the Alzadia district, one of which was filled with chlorine gas. +One woman and two children were killed, and seven people have been left with breathing difficulties. +"We are now clearing away the toxic remains of the bomb so that children don't play with it," quoted Bild as his last words before he died. +The fatal bomb dropped by the Assad regime was supposed to have been aimed at terrorists. +The Greenland shark: The oldest vertebrate is almost 400 years old +It's a rare sight. +Greenland sharks generally only come to the surface in winter. +After being examined on board the research ship "Sanna", this shark was returned to the sea. +It was born in 1624 and has swum through the North Atlantic at 1km/h right through to the present day. +Greenland sharks only give birth to young at the age of 150. +Greenland sharks swim leisurely along the sea floor of the North Atlantic, covering an average of 1,220 metres in an hour. +The five-metre-long animal can ramp this up to 2.6 km/h if necessary - but this maximum speed is half as fast as a seal. +However, this slow pace of life seems to be the key to a long life. +Julius Nielsen from the University of Copenhagen and his colleagues wrote an article in "Science", the specialist journal, about a Greenland shark that could be 392 years old. +"It's crazy," says Alexander Scheuerlein from the Max Planck Institute for Demographic Research in Rostock about this lifespan - which is a world record for a vertebrate. +It is true that evolutionary biologists had long thought that Greenland sharks had been around for a very long time. +They were simply lacking the proof. +It is hard to observe Greenland sharks, namely because they mainly live in the ocean off the sparsely populated coasts of Canada, Greenland, Norway and Svalbard. +They generally only come to the surface in winter because they prefer water temperatures of around six degrees Celsius. +As a result, researchers know little about how Greenland sharks live. +Their slow speed was measured by researchers off Svalbard, who fitted six animals with a tracker. +However, these sharks still manage to catch prey: In one animal's stomach, researchers found the remains of a seal; another shark had gobbled down the jawbone of a young polar bear. +It may be the case that they hunt down sleeping animals, or patrol on the ocean floor and look out for corpses that have sunk downwards from higher levels of water. +Julius Nielsen and his colleagues have now examined 28 Greenland sharks caught in the depths of the North Atlantic by fishermen between 2010 and 2013 off the coast of Greenland or Svalbard. +The smallest shark was just 81 centimetres long, while the largest measured 502 centimetres. +They use carbon-14 dating on the shark's lens core to determine the shark's age. +This core of the eye's lens comes into being even before the shark is born, and the proteins in it are not renewed subsequently. +The two smallest sharks had remarkably high levels of carbon-14 in their lens cores. +Consequently, they were likely born after the early 1960s, when nuclear weapons experiments released large amounts of this radioactive carbon into the atmosphere. +By contrast, the lens cores of third-smallest animal, at 220 centimetres long, contained less of a surplus of carbon-14 from nuclear weapons experiments - so when it was examined in 2012, it must have already had its 50th birthday. +By contrast, all the larger Greenland sharks had normal levels of carbon-14 in their lens cores, which comes from cosmic radiation in the atmosphere. +In fact, the carbon-14 monitor gave a 493-centimetre-long Greenland shark an age of 335, while the record-holding shark, at 502 centimetres, was apparently 392 years old. +It was already known that female Greenland sharks first had offspring when they were more than four metres long. +Now researchers have been able to map this length onto an age. +As one of the animals, 392 centimetres long, was likely on the threshold of sexual maturity, and had an age of 156, it seems that Greenland sharks take at least 150 years to be able to reproduce. +This is also a world record for vertebrates. +It is not by chance that such Methuselahs predominantly live in icy waters. +The previous record holder, a 211-year-old Greenland whale, in whose neck a 120-year-old harpoon tip was lodged, was caught off Alaska. +As a result of low temperatures, the systems of the animals living there often run on as little energy as possible. +This means they mature later - and age slower. +The animals often become particularly large so they stay warm in cold waters. +This is because their volume increases much quicker than their surface area, through which the animal radiates heat. +This means that the heat lost per gram of a mouse is much bigger than that lost per gram of an elephant. +Another advantage is that they have fewer enemies. +"This means that a smaller animal has a more dangerous life, and has to focus on having as many offspring as quickly as possible," explains Scheuerlein, an evolutionary biologist. +By contrast, a very large animal can invest its resources in having a longer life. +Construction sites coming as a twinpack +The commune's council focused on construction-related topics in its most recent session. +The committee was pleased to hear mayor Robert Putz' announcement that "we can finally begin to market the residential construction sites that have recently been marked out". +After plot, parcelling and accessibility questions had been answered, and applications for measurements had been made, there was nothing standing in the way of the sale of the plots in the residential areas of "Straßlweg" and "Schönau-West" (near Binderstraße - development section 1) to interested parties. +The communal council is convinced that the construction sites in the rural, peaceful residential commune of Schönau will attract young families and older people alike. +As said, people prepared to build on these sites should apply in the town hall from now, and the communal council will probably discuss giving out the plots in its September meeting. +So that it would be able to answer questions on the movement of additional businesses, in connection with the creation of jobs, the communal council decided to amend the space usage plan first re-drawn in spring of this year. +Consequently, the business area already marked out in Unterzeitlarn will be expanded to include a further two plots near state road 2112. +Frankfurt will benefit from Brexit +The city on the river Main will soon have the best chance against the competition of Paris, Dublin and Luxembourg to draw jobs and companies away from London. +"It is highly likely that Frankfurt will benefit the most from the Brexit vote," said Michael Voigtländer, Head of IW's Financial Markets and Real Estate specialist area. +After the Brexit referendum it is unclear whether financial institutions will still be allowed to run European financial business from London. +Registration in the UK is all that has been required to date for the "EU passport". +This is generally used by large US banks. +Several banks have already announced that they will relocate jobs. +The "Frankfurt Main Finance" lobbying group expects to see 10,000 new jobs on the river Main within five years. +According to the IW, the European Central Bank (ECB)'s headquarters, responsibility for monetary policy and supervision over the largest banks in the eurozone, all come together to represent a real plus for Frankfurt, along with further important authorities, such as EIOPA, Europe's insurance regulator, and ESRB, the risk board. +While Paris has the headquarters of the Organisation for Economic Cooperation and Development (OECD), this is less important for the financial sector than the ECB. +"The proximity to the central bank is important for banks - they can communicate directly with the authorities," says IW's Professor Voigtländer. +While Luxembourg is home to a large funds industry, like Dublin, its infrastructure lets it down. +Thanks to its large airport, Frankfurt is considerably easier to get to. +In addition, the city's easily available business properties are a win. +"In Paris it's not all that easy to find vacant high-quality offices," said Voigtländer. +Rents for top-class business properties are 50% higher on the banks of the Seine than on the banks of the Main. +In addition, Frankfurt can offer better quality of life than its competitors, thanks to its good medical systems and infrastructure, and low crime levels. +In a table compiled by management consultants Mercer, the city was ranked 7th, Luxembourg 19th, Dublin 33rd and Paris 37 th. +And even if quality of life is a matter of preference: "Thanks to its already strong position as a financial hub for the European domestic market, Frankfurt could be able to attract additional banks and investors," IW concluded. +Despite the Brexit vote, London will remain Europe's financial capital, according to the economic researchers. +This is also to do with strength ratios: According to figures from regional bank Helaba, around 144,000 people worked in banking in London in 2015 - compared to 62,500 in Frankfurt. +Gilead to get attorney fees in hepatitis C patent fight with Merck +Gilead Sciences Inc is entitled to receive the attorney fees it incurred related to hepatitis C patent litigation with drugmaker Merck & Co Inc, a U.S. district judge has ruled. +In June, Gilead was freed from paying up $200 million in damages for infringing two Merck patents related to Gilead's blockbuster drugs Sovaldi and Harvoni, after a U.S. judge found a pattern of misconduct by Merck including lying under oath and other unethical practices. +In a filing on Thursday, U.S. District Judge Beth Labson Freeman said that Gilead was entitled to relief from the fees it incurred while defending the case. +Merck is trying to catch up to Gilead, which dominates the market on a new generation of hepatitis C drugs that can cure well over 90 percent of patients with the liver disease. +The case dates back to 2013 when Gilead and Merck sued each other, claiming ownership of laboratory work underlying sofosbuvir, the active ingredient in Gilead's drugs. +U.S. backed forces say they have seized full control of Manbij from Islamic State +U.S.-backed forces have seized full control of northern city of Manbij near the Turkish border after the last remaining Islamic State fighters inside the city left, a spokesman for the group said on Friday. +Syria Democratic Forces (SDF) were now sweeping the city after the departure of a remaining group of militants who had been holed up in the city. +They had freed over 2,000 civilian hostages who had been held by the militants, Sharfan Darwish of the SDF allied Manbij Military Council told Reuters. +"The city is now fully under our control but we are undertaking sweeping operations," he told Reuters. +Clintons earned $10.75 million in 2015, paid 34.2 percent federal tax rate +Hillary Clinton on Friday released her 2015 tax returns, which showed the Democratic presidential nominee and her husband had $10.75 million in income that year and paid an effective federal tax rate of 34.2 percent. +In 2015, the Clintons made $1 million in charitable contributions, mostly to the Clinton Foundation; former President Bill Clinton brought in nearly $5.3 million in speaking fees; and the former secretary of state reported income of $3 million from publisher Simon & Schuster for her book on her tenure at the State Department. +Clinton's running mate, U.S. Senator Tim Kaine of Virginia, along with his wife, Anne Holton, released 10 years of tax returns. +They paid a federal effective tax rate of 20.3 percent in 2015. +"Hillary Clinton and Tim Kaine continue to set the standard for financial transparency," Clinton campaign aide Jennifer Palmieri said in a statement. +In stark contrast, Donald Trump is hiding behind fake excuses and backtracking on his previous promises to release his tax returns. +It is customary for U.S. presidential candidates to make their tax returns public, although they are not required by law to do so. +Trump, a New York businessman, and his lawyers have cited an audit by the Internal Revenue Service as a reason for his refusal to release his returns. +"Your move," Clinton campaign aide Ian Sams said on Twitter, linking to the Democratic nominee's returns. +On Thursday, Trump's special counsel, Michael Cohen, told CNN he would not allow Trump to release them until the audits are complete. +Trump's critics, including 2012 Republican presidential candidate Mitt Romney and other fellow Republicans, have said his refusal raises questions about his net worth, his charitable contributions, his business dealings and various other ties, including with Russia. +Clinton has pounced on the issue, releasing an online video on Friday highlighting high-profile Republicans urging Trump to release his taxes. +On Thursday, she raised the issue during an economic speech in Michigan. +"He refuses to do what every other presidential candidate in decades has done and release his tax returns," she told the crowd. +Politico has reported that Trump paid zero to very little taxes for two years in the 1990s, and a New York Times business columnist on Friday quoted a number of tax lawyers and accountants saying that could still be the case. +Federal tax rates have become an issue in the presidential election. +Clinton has endorsed a rule named after billionaire investor Warren Buffett that would ensure those making more than $1 million a year pay a tax rate of at least 30 percent. +President Barack Obama also backs the proposal. +At a Clinton rally last week in Omaha, Nebraska, Buffett, whose Berkshire Hathaway conglomerate is based there, challenged Trump to meet and exchange tax returns. +Buffet said that he too was under IRS audit and Trump is "afraid" not of the tax-collection agency but of voters. +Clinton's campaign has released tax returns going back to 2007. +The Clintons, who now live in Chappaqua, New York, paid an average effective federal tax rate of about 32 percent from 2007 to 2014 and an effective combined tax rate of approximately 40.5 percent. +The Clintons' 2015 return showed that, unlike most Americans, just $100 of their income came from wages. +Their main investment was a low-cost index mutual fund, and the Clintons reported dividend and interest income of $109,000. +Additional reporting by Kevin Drawbaugh; Editing by Jonathan Oatis +Chilli-powder condoms, firecrackers boost Tanzania elephant protection +Conservationists in Tanzania are using an unorthodox way of keeping elephants from wandering into human settlements - by throwing condoms filled with chilli powder at them. +The method has proved effective and Honeyguide Foundation, which hit upon the idea several years ago, with U.S.-based Nature Conservancy has stepped up its promotion, training volunteers in villages in north Tanzania to use a non-violent four-step way of protecting their homes and crops without hurting the animals. +Previously many used spears to defend themselves. +Friday is World Elephant Day, which is dedicated to the protection of the animals. +"Since we developed the ... toolkit, we have seen an attitude change within these communities whereby they are much more confident that they can keep elephants out of their fields without harming the elephants," Honeyguide executive director Damian Bell said in a statement. +The first two steps involve shining a torch at the trespassing elephant and sounding a horn. +If it is not deterred, a so-called "chilli cloud" is thrown. +Chilli powder mixed with soil is packed with a firecracker into a condom, its end is twisted shut with just the fuse exposed. +When lit, the condom bursts open with a bang, spraying a fine dust of chilli powder into the air. +One whiff is usually enough to send an elephant the other way. +A last resort is a launcher that shoots a Roman candle firework into the air, producing a loud, bright explosion. +Municipal council reaches unanimous decision: No new kiosk to be built on the St. Goarer bank of the Rhine +Normally the people of St. Goarer are happy to accept investment from businesses - but retail in the core of the city is clearly capable of developing itself. +The municipal has now unanimously rejected the application to build a new retail kiosk on the bank of the river Rhine close to the Rhine balcony currently under construction. +"We are generally happy to welcome new businesses, but this kiosk does not fit in this exposed position on the bank of the Rhine," explained Michael Hubrath on behalf of the CDU faction. +Jewish filmmaker slams Berlin hotel for removing Israel dial code after Arab "request" - RT News +A French filmmaker of Jewish origin unleashed a media furor after he revealed that the Kempinski Bristol hotel in Berlin does not list Israel's dial code, with employee citing "requests" from Arabic customers. +Claude Lanzmann, an author of Holocaust documentary "Shoah," vented his frustration at the Kempinski Bristol Hotel in Berlin, writing an open letter in the German outlet FAZ. +During his recent stay, Lanzmann tried to find Israel in the list of dial codes provided by the hotel. +The country however was not mentioned among the states one can call directly from the room. +How is it possible, in 2016 in Berlin, the capital of the new Germany, that Israel was eliminated and eradicated? +Lanzmann wrote. +Instead, Kempinski Bristol offers an opportunity to dial Israel via an own call center. +Seeking explanation, the filmmaker addressed the issue at the hotel's reception. +The answer he got there, Lanzmann wrote "shocked him." +The hotel's clerk said that the measure was "a deliberate decision by the management of Kempinski-Hotels." +The reason behind the move triggered even more outrage by the filmmaker. +"The majority of our guests are Arabs and they demanded Israel's code to be deleted," the employee was quoted as saying by Lanzmann. +Israeli ambassador to Germany Yakov Hadas-Handelsman called the case a "great shame," Suddeutsche Zeitung reports. +We were appalled and shocked by the incident. +It is in itself a great shame. +The fact that it has occurred in Germany and at that very hotel chain, is an even greater disgrace. +That needs no explanation. +We expect that the hotel draws the right conclusions," the official said. +The incident triggered quite a response online, with people calling it a scandal. +Some alleged that the Kempinski hotel simply "caved in" to the alleged demands of Arabic customers. +"Shame on you," another post stated, pointing out that the hotel, located in the noble Kurfurstendamm street stands near a synagogue. +The hotel itself was quick to brush off any accusations, calling what happened an "oversight" and "apologizing" to Lanzmann, Der Spiegel reports. +"There was never a direct order" not to include Israel in the fast dial list," Suddeutsche Zeitung quoted a Kempinski representative as saying. +It adds that the code was now added. +Police use tear gas & rubber bullets against protesting Brazilian students +Students clashed with police in the Brazilian city of Sao Paulo on Thursday as they gathered to demonstrate against government reforms to the public education system. +Police used tear gas and rubber bullets against the protesters. +The trouble started when law enforcement officers tried to disperse the students, which led to the police using rubber bullets and tear gas. +Several hundred students took part in the demonstration to express their dismay at the plans. +Under proposals from the governor of the state of Sao Paulo Geraldo Alckmin, just under 100 public schools will be closed, while 300,000 students will be relocated in order to save money. +Some of those taking part in the protest could be seen writing graffiti on the walls against the interim President Michel Temer. +This latest protest comes just days after protesters took to the streets en masse to support suspended President Dilma Rousseff as the country's senate voted for her impeachment. +Trade between Russia & Iran surges 71% - RT Business +With the lifting of sanctions, trade turnover between Moscow and Tehran has grown 70.9 percent in year-on-year terms, according to Russia's ambassador to Iran, Levan Dzhagaryan. +Since international sanctions against Iran were lifted, there has been a surge in interest from Russian firms in doing business in the country, the ambassador said. +Russian companies are resuming existing ties with Iran, while new firms are ready to get access to the market. +Of course, the further expansion of trade is one of the main priorities of the bilateral cooperation with Iran," Dzhagaryan said. +He noted that in the first five months of 2016 the trade turnover between Russia and Iran increased by 70.9 percent compared to the same period of 2015 and amounted to $856 million. +In particular, Russian exports to Iran jumped by 91.5 percent and amounted to $697 million. +Russian imports from Iran increased by 16 percent to $158 million. +The boost in trade was achieved by supplies of machinery, ground vehicles and weapons," the ambassador said. +Dzhagaryan is also expecting a record number of Iranian tourists to visit Russia this year. +Last year, the Russian diplomatic mission in Iran issued about 35,000 visas, mostly travel, to Iranian citizens. +In addition, for the first time Iran entered the top 20 countries by number of tourists visiting Russia. +It's safe to say that last year's record number of Iranian tourists visiting Russia will be broken," he said. +At the same time, relatively few Russians are visiting Iran, something the ambassador hopes will change. +"I can personally recommend to visit the cities of Isfahan, Shiraz and Yazd that have preserved monuments of ancient Persian civilization in good condition," he said. +Witnesses wanted: drinks cash-and-carry in Waldbröl raided +A robbery took place on Thursday evening in the drinks cash-and-carry of Rewe XXL on Walbröl's Gerberstraße. +Three people dressed in dark clothing and with their faces covered brandished a gun and demanded that staff at the cash-and-carry hand over cash. They made a run for it on foot, and then probably got into a silver VW Golf. +The police did not report how much money had been stolen. +Between 1.6 and 1.7 m tall, the perpetrators were relatively short. +The drinks cash-and-carry can be accessed directly from the Rewe supermarket's car park, and is tricky to observe. +After the robbery, the perpetrators must have run towards Gerberstraße along Friedrich-Engelbert-Weg, and then fled, possibly towards the B 256 (Schladern ring road) in the silver car from the Schotterparkplatz opposite the entrance to the multi-storey car park. +Anyone who saw anything around the time of the crime (around 7.45 p.m.) that is connected with the robbery should contact the police immediately. +Nagold: Fun and games at the summer fete +Children and young people from the youth work day group/social group work project from the child protection league of Nagold spent eight gloriously happy days with their social workers during the summer camp in Nussdorf, near Mühlacker. +The lively group spent the first week of the school holidays in the peacefully-located Hartwäldle holiday camp. +There were several day trips on the agenda. +One trip saw the group head to Bretten to visit the petting zoo. +Another saw them visit Maulbronn, where there was a special children's tour around the world-famous cloisters. +The third trip took the group to Pforzheim. +The group learnt lots about how the Celts lived and what they ate in the Celtic Museum in Hochdorf. +On warm dates, the group cooled off at the Tiefensee lake in Maulbronn: perfect for jumping into, swimming around in, and paddling. +Children and carers cooked their own favourite meals, such as mini German spätzle dumplings in a sour sauce, traditional Seebronner Pfännle and Iselshauser Bloff, English breakfast, and Tübingen-style bolognese. +During workshops, children could practise baktik, make beautiful jewellery with pearls and stones, or create a Roman windmill game from wood. +Other highlights of the summer camp included fishing in a nearby pond, spending the evenings around a campfire, and the concluding "Gala Night". +When it came to go home, the sun was shining, and the children and young people headed home happy. +Haigerloch: Pilgrims at the gates of mercy +The ministrants from the chaplaincy of Eyachtal-Haigerloch St. Anna went on a four-day pilgrimage from Villingen to Freiburg. +They covered four stages together. +The committee of upper ministrants for St. Anna had decided to prepare for and go on a pilgrimage lasting several days to bridge the gap to the next pilgrimage to Rome for all ministrants, likely to take place in two years' time. +Various pilgrimage sites were discussed, and a decision was finally made to go to the bishop's city of Freiburg, where, to mark the holy year of mercy, this year the gates of mercy opened for this at Freiburg cathedral are a particular pilgrimage site. +16 children from Bittelbronn, Gruol, Haigerloch and Heiligenzimmern set off. +On the previous evening, Father Storost set the pilgrims off with a small celebration in St. Anna, blessed the pilgrims' cross and the pilgrims. +They took the train from Horb to the starting point of Villingen, where the Cathedral of Our Lady is found. They started their pilgrimage from the cathedral. +The individual day trips were framed by brief moments every morning and evening with various prayers, songs and written texts. +Even when they were out and about, the children took breaks at wayside crosses, chapels or churches to sing a song from the pilgrims' songbook they had put together themselves. +The rectory of each parish they reached was available for them to stay in overnight. +At each stage, Alexandra Burkhardt and Heidi Faller were responsible for creating a delicious, nourishing dinner and breakfast. +The second day saw them head towards Gütenbach, via Furtwangen. +The next day, they set off on the section towards St. Peter, the most demanding section, seeing them climb around 500 metres in altitude in sweltering heat, and then descend again. +They earned the reward of barbecueing together by the swimming pond. +After the morning session on the fourth day of the pilgrimage in the impressive cloisters of St. Peter, they started off on the final stage to Freiburg. +The children gathered together in Freiburg Cathedral late in the afternoon, visibly relieved and happy, and passed through the gates of mercy. +A brief moment was taken to thank God. +The evening mass in the cathedral saw the children who had arrived at the pilgrimage site welcomed by Chaplain Markus Obert. +After the service, the pilgrims were able to visit the sacristry and the high altar. +The next day, there was time to look around the city, located in the region of Breisgau. +In the afternoon they took the train back to Horb. +At the end, all the participants agreed that the trip was characterised by spirituality and a strong sense of camaraderie. +Scot Callum Skinner storms home as Brits grab cycling gold +Scotland's Callum Skinner raced to glory in the men's team sprint at the Rio velodrome last night as the Team GB trio defended the title from London 2012. +The Glaswegian 23-year-old was in the anchor role that his fellow Scotsman Sir Chris Hoy made his own and the youngster did the legend proud as he stormed home to snatch victory from the favoured New Zealand outfit. +Britain claimed a shock victory four years ago to win as Hoy claimed the fifth of his six Olympic golds. +And they repeated the trick after finishing a lowly sixth at March's Track World Championships in London, despite Hoy having since retired. +The issue between Beijing and London was replacing specialist starter Jamie Staff. +They did so just in time as Hindes emerged. +Hoy's retirement also created a void which Kian Emadi and Matt Crampton tried to fill. +Skinner was the man Britain's coaches stuck with, seeing potential in the Scot which has now been realised. +Hindes, Kenny - champions with Hoy four years ago - and Skinner set an Olympic record in qualifying, but the standard was overtaken by New Zealand in the first round. +And the British trio won the duel for gold. +Hindes was narrowly behind after his lap, but Kenny pushed the team in front and Skinner held on. +A change of strategy was a big part of the transformation, with Hindes riding a bigger gear to slow him down and allow Kenny and, in particular, Skinner to keep pace. +Hoy watched on from his position as a BBC pundit and caught the eye of Skinner, Kenny and Hindes when they stepped on to the podium. +The 23-year-old Skinner, from Glasgow, said: "It's a flattering comparison." +I'm just out there to do my best and make a name for myself. +We set an Olympic record in the final and beat the world champions. +It was just incredible. +There's no better way to win it. +After triumphing at London 2012 alongside Kenny and Hoy, Hindes admitted to deliberately falling to the track following a poor start. +He later retracted the comment and there was no method of appeal from Britain's rivals. +There was no such issue this time around in a supreme victory. +Hindes said: "It felt like London, with all the GB flags in the stand." +We all as a team came together in the last three months. +We've been losing out on so many world titles, so to win the Olympics again is just amazing. +That is one event, one gold medal for the nation which won seven out of 10 track titles in both Beijing and London. +If that is a barometer of the progress made in the last five months, then a successful five days in the velodrome awaits. +With the form Kenny demonstrated, it is not beyond the realms of possibility to imagine him repeating Hoy's feat of winning three Olympic golds in one Games. +That would see Kenny - who is exactly 12 years younger than Hoy, who is also born on 23 March (that seemingly sacred date in British sport which is also the birthday of Steve Redgrave, Mo Farah and Roger Bannister) - take his tally to six gold medals and one silver. +That would be the same as Hoy's. +Kenny next competes in the sprint, which begins on today and plays out over three days. +The 28-year-old from Bolton said: "I'm just enjoying this one for now. +The team event is always the best. +You get to win it with your mates. +It's a bit lonely winning on your own to be honest. +Hindes said: "If he wins another two gold medals, he should get a knighthood." +It was the day's only medal event, but there was further good news for Britain. +Sir Bradley Wiggins, Ed Clancy, Steven Burke and Owain Doull qualified fastest in the four-man, four-kilometres team pursuit. +They finished in 3:51.943. +The world record, set in winning gold at London 2012, is 3:51.659. +The first round and final (10.42pm) take place on today's second day of action, where Wiggins is sure to be the focus. +He had a dispute with commissaires yesterday ahead of the qualification ride, when officials summoned him to measure his height. +In the corresponding women's event, which resumes and concludes tomorrow, Laura Trott, Joanna Rowsell Shand, Elinor Barker and Katie Archibald of Milngavie advanced in a world record time, clocking 4:13.260. +Team GB have come to rely on its mighty track cycling squad to take ownership of the middle period of an Olympic Games and deliver a host of medals. +After truly exceptional showings of utter dominance at Beijing and London, expectations have been played down in the lead-up to Rio. +There have been dramas in the background, not least the resignation of technical director Shane Sutton in April amid sexism and bullying allegations, and the retirements of giant figures like Hoy and Victoria Pendleton. +However, on the evidence of the first night's racing in the velodrome, it looks like GB's now legendary reputation for peaking at the perfect time could be about to be repeated once again. +Portland smelter's future in doubt with axing of power contract +The future of the Portland aluminium smelter in Victoria - and the jobs of hundreds of workers - is in doubt with the power company which supplies the plant disclosing one of the plant's owners is to terminate a supply contract, with all supply contracts expected to be axed. +The move follows the decision of the Victoria government earlier this year to not extend subsidies provided to keep the plant in operation. +A 20-year fixed subsidy expires in November. +Up to 2000 jobs may be at risk at Alcoa's Portland plant. +As many as 2000 jobs - direct and indirect - could be at risk with any closure. +And there could be additional knock-on effects since the smelter consumes around 10 per cent of Victoria's entire electricity output. +In 2014, Alcoa closed the Point Henry smelter which led to the closure last year of the Anglesea power plant. +Alcoa's Portland smelter is losing money and risks closure. +The moves follows speculation about the future of the plant for several years now, initially in the wake of the strong Australian dollar and more recently due to the price for the output from the plant. +AGL, which supplies the big aluminium smelter with electricity from its Loy Yang A power plant in the Latrobe Valley, said it expects the other three owners will also move to terminate their agreements. +The plant is majority owned by a joint venture of Alcoa and Alumina, with China's CITIC and Japan's Marubeni Corp holding smaller shares. +"AGL expects the Portland facility to continue to operate, meaning physical demand for electricity from the smelter will continue," it said. +AGL said the contracts are so-called 'hedging contracts' which were due to take effect from November 2016. +The contracts have a 12-month termination period so they will actually finish in 2017. +"As such, AGL continues to expect the contracts to contribute to earnings in fiscal year 17," the power company said. +Any potential earnings impact on AGL from FY18 onwards is currently limited by the strong futures market outlook for wholesale electricity prices. +AGL said it had already written down the value of the contracts in its accounts by $187 million in "anticipation of a termination event." +Alcoa said the decision to close out the contracts "does not affect Alcoa's ... ability to operate the smelter or secure electricity supply to the smelter." +The US company said it entered into a 20-year contract with Loy Yang in 2010 , which was due to commence from November this year, although it has yet to explain why it has pulled out of the contract. +Analysts have been wary of the possible closure of both of the Portland smelter in Victoria and also the Tomago plant near Newcastle due to the poor economics of the industry. +Addressing analysts earlier in the week, AGL's head of operations, Stephen Mikkelsen said Portland uses around 600 megawatts of power annually and Tomago around 900 megawatts. +If both of those plants go from the market that's a significant reduction in demand in the [electricity] market. +And as a generator that wouldn't be good for us," he said. +Not just a Kardashian reality TV star, Kendall's on the cover of September's Vogue +Kendall Jenner, 20, model and fourth daughter of mother-manager Kris's Kardashian-Jenner clan, is on the cover of US Vogue's coveted September issue. +Kendall, who is an Estee Lauder brand ambassador and has walked in Milan, Paris and New York fashion weeks, announced the news on her Instagram account on Thursday. +"In a room with a bunch of people I love, looking at this cover made me cry," Kendall wrote. +The cover revelation was followed by a bizarre (or simply Keeping Up with the Kardashians-esque?), scripted reality video that featured the entire Kardashian-Jenner family (bar troublemakers Rob and Caitlyn, and joined by everyone's favourite showbiz uncle, Keeping Up producer Ryan Seacrest) forgetting about their sister's cover, only to end with the classic twist: they were all planning a surprise party. +It's the cliche plot line of nearly every "birthday" episode of a children's television show (Seacrest delivers the line, "You thought we forgot about you?," with the sincerity of a cartoon rabbit in an 8am timeslot), but Kris had to get her other girls in on this publicity somehow. +Because, with a spot on Vogue's September issue, we have surely entered a new era of Kardashian. +Kendall's big sister Kim may have beaten her to the cover of Vogue (she shared it with husband Kanye West in April 2014), but the magazine's September cover is a league unto itself. +The September Issue is Vogue's highest selling edition of the year. +With a thickness more closely resembling a coffee table book than a fashion magazine, the issue attracts a huge number of advertisers (Fashionista counted 615 of last year's 832-page tome as advertising content). +The revelation of its cover star is so hotly anticipated that, in the past two years, pictures of the magazine have been leaked before the official announcement. +Previous women to feature on the cover include Naomi Campbell, Linda Evangelista and Kate Moss. +In recent years, the cover has certainly featured more "celebrities who model" than "models who are celebrities." +Oscar winner and Dior ambassador Jennifer Lawrence was featured in 2013, the year after Lady Gaga had the honour. +But, even on the off-chance that Ms Jenner - who is described by the magazine as the "breakout model" of her generation - falls into the former category, she is in pretty good company. +These celebrities are not relatives of famous people, or reality stars, or kids these days who know how to make a good Snapchat video (although Jenner is all of these things). +They are legitimately talented women, excelling in the entertainment industry. +Beyonce, who appeared on last year's cover, has had one of the strongest years of her career with the release of Lemonade. +Of course, not everyone is pleased about Jenner's success. +With her reality television history, Jenner's position within the fashion world was always going to be fraught. +In June, original Victoria's Secret model Stephanie Seymour criticised Jenner and her colleague Gigi Hadid, calling them the "bitches of the moment." +This sentiment has boiled up again with the news of Jenner's Vogue cover appearance. +But dwelling on the discontent seems beside the point. +Kendall Jenner is on the cover of the September Issue of Vogue. +She is a supermodel, in the purest sense of the word. +She's walking for Marc Jacobs. +She's selling you Estee Lauder foundation. +She, and all of her sisters, are selling you pictures of themselves on their respective paywalled apps. +She's selling pictures of Cindy Crawford's daughter she photographed to LOVE magazine. +And, in her downtime, possibly just as a way still to see sister Kourtney and her kids, she's on reality television. +Community legal centres turn away 160,000 people a year +More than 160,000 of the nation's most vulnerable are turned away from community legal centres every year, with the sector bracing itself for the impact further funding cuts will have on already-stretched operations. +In Queensland, three out of five people - mostly the elderly, immigrants, vulnerable workers, victims of violence and those without resources to fight unfair evictions and the like - are already turned away while seeking free legal advice and representation. +Community legal services, already stretched beyond limits, are bracing for further cuts. +From June next year, those legal centres are slated to lose another 30 per cent of their federal funding. +Director of Community Legal Centres Queensland James Farrell said the latest National Association of Community Legal Centres Census Report found thousands of people were already being turned away each year. +Mr Farrell said without a reversal of the federal government decision, the situation was only going to get worse. +"Queensland's community legal centres are chronically underfunded, meaning thousands of people are turned away from the vital services they need," he said. +People leaving violent relationships, people with unmanageable and crippling debts, families going through separation, workers who are unfairly sacked - all of these people have problems with legal dimensions, and this report shows that they're not able to get the help they need. +The federal government will cut funding by 30 per cent from June 2017, which means thousands more vulnerable Queenslanders will be forced to navigate complex legal problems without help. +We call on the Attorney-General, and Queensland Senator George Brandis to immediately reverse these funding cuts, so people can get the help they need when they're faced with a legal problem. +Last year, the state government delivered on its commitment to bring legal aid funding up to the national average. +It's now time to look at the needs of community legal centres and their client communities, and for the Palaszczuk government to invest in this important work. +Donald Trump campaign sued after staffer allegedly pulled a gun +New York: Donald Trump's campaign was sued for allegedly doing nothing after being told that the director of its North Carolina operations pulled a gun on a staffer as they drove in a Jeep in February. +The incident was described in a lawsuit filed on Wednesday in state court in Charlotte by Vincent Bordini, a former software trainer for the state campaign. +Bordini said he waited for months for the situation to be handled internally before realising "this was not going to happen." +The director, Earl Phillip, "produced a pistol, put his right index finger on the trigger, and drove the barrel into Vincent's knee cap," Bordini said in the complaint. +After complaining to local and regional campaign leadership, Bordini learned that at least four other people had experience the same thing with Phillip, according to the filing. +"Guns don't have to fire to inflict damage," Bordini said in the complaint. +The suit comes just two days after the Republican presidential nominee caused a furore when telling a crowd in North Carolina that the "Second Amendment people" -- understood to be gun owners and gun enthusiasts -- could take action if his rival Hillary Clinton were elected and gets her pick of judges. +Trump's campaign said the media had taken his words out of context and that he wasn't advocating violence. +Bordini's complaint seeks compensation from the campaign for negligent supervision, and from Phillip for assault, battery and infliction of emotional distress. +Trump spokeswoman Hope Hicks didn't immediately return a message seeking comment. +Attempts to reach Phillip were unsuccessful. +WCCB, a local news affiliate in Charlotte, reported Phillip recently left the campaign. +A call left at his consulting firm, Innovative Consulting Services, wasn't immediately returned. +Republican presidential candidate Donald Trump has run a controversial campaign. +The case is Bordini v. Donald J. Trump For President Inc., 16-CS-14300, General Court of Justice, Superior Court Division County of Mecklenburg (Charlotte). +Berlin/Schwerin: Poll ahead of regional elections: SPD and CDU lose out +Ahead of the elections in the federal states of Mecklenburg-Vorpommern (4 September) and Berlin (18 September), considerable losses are looming for the governing parties of the SPD and the CDU. +These are the findings of a representative poll carried out by INSA, a polling institute, on behalf of "Bild" newspaper. +While the red-black ruling coalition in the north might just be able to continue in office, this will not be possible in Berlin, according to the poll. +However, the SPD was the strongest party in both states, with good chances of putting forward the head of the government. +In Mecklenburg-Vorpommern, the SPD plummeted from 35.6 percent to 24 percent in five years. +According to the poll, this puts the party only slightly above the CDU, who had 23 percent. +The Left and the AfD will fight over third place. +The Left had 19 percent (previously 18.4 percent), and, with 19 percent, the AfD could be in the regional parliament for the first time. +Despite small losses (from 8.7 percent to 6 percent), the Greens will return to Schwerin's regional parliament. +The NPD and the FPD, with 3 percent each, will not be represented in the regional parliament. +According to the poll, the SPD would only receive 23 percent in Berlin's elections to the House of Representatives (2011 elections: 28.3 percent). +The CDU would only take 18 percent, after having taken 23.4 percent. +This would put them behind the Greens with 19 percent (2011: 17.6 percent), but ahead of the Left, with 15 percent (previously 11.7 percent). +The AfD would be represented in the House for the first time, with 14 percent. +With 5 percent, the FPD could hope to return, but the Pirates, by contrast, would miss out - unlike in 2011. +Nokia 9000 Communicator: The first smartphone +Email and the Internet in slow motion: The Nokia Communicator was brought to market 20 years ago. +Its successors have now conquered the world - but its manufacturer is in the midst of a disaster. +The device weighed almost half a kilogram, and was more than four times as heavy as an iPhone 5. +It was thicker and larger, and harder to hold. +Indeed, it was quite bulky. +The in-built storage originally held eight megabytes - enough today for around two high-resolution selfies. +Now, an iPhone holds at least 16 gigabytes. +The "Nokia 9000 Communicator" was released for sale exactly 20 years ago, on 15 August 1996 - and it was the first smartphone. +The device is still available online for fans to buy for a couple of euros, even though it comes from the stone age of the Internet. +However, 20 years ago, the Communicator sparked a sensation. +The Finnish mobile phone manufacturer had presented the product a couple of months previously at the Cebit computer trade fair in Hanover, billing it as "the office you can fit in your pocket". +The new mobile phone could really do a lot by standards back then: it could send and receive SMS messages and emails, and could even be contacted by fax. +You could even access websites via a HTML browser, even though it was painfully slow. +There was a calculator, a digital address book and an electronic calendar. +There was a small antenna, and the phone could be folded open like a laptop. +This revealed a small keyboard and a black and white screen. +The price was fairly high: 2700 deutschmarks, around 1400 euros. +In 2015, the average sale price of a smartphone in Germany was 392 euros. +In August 1996, nobody had any idea that the Communicator heralded the start of the smartphone era. +Today, everything has changed. +Smartphones are a success story - even if the same cannot be said for Nokia. +The mobile phone branch of the Finnish company experienced an unprecedented disaster, and was eventually sold to Microsoft and wound up. +Today the market is dominated by providers who came to the game much later than Nokia. +For many people today, being online all day, no matter where you are, is simply a fact of life. +In 2015, there were around two billion smartphone users around the world. +Around 1.4 billion devices were sold, and Samsung and Apple alone make up 555 million of them. +Global sales of the devices amount to around 400 billion euros. +This is in addition to the flourishing businesses of innumerable app providers and telecommunications firms. +An entire industry has now sprung up around smartphones. +The decisive moment when the mass market was broken into was only at the start of 2007, when the Apple CEO at the time, Steve Jobs, announced the introduction of the iPhone at Mac World. +He promised three devices in one: a music player, a telephone and an internet communicator - and everything could be accessed easily via touchscreen. +Apple's triumphant march began, and the iPhone is still the company's most important product today. +Nokia, Motorola and Blackberry, who used to dominate the market, lost out. +They eventually disappeared, and Blackberry had to fight for its existence. +Apple, and Asian providers such as Samsung, now hold sway. +20 years after their invention, smartphones are a fact of life. +Nowadays, every German looks at their phone an average of 88 times a day. +"We all need to learn to put our phones down from time to time," said Janina Kugel, Siemens HR Director. +Being permanently contactable has become a blessing and a curse. +Britain must channel the Olympic spirit and expand Heathrow +Heathrow will also deliver regeneration and prosperity not just in our local communities and across London, but across the country. +For me, this was the great attraction of Heathrow, just as it was with London 2012, where we made enormous efforts to ensure that all our nations and regions benefited from the Games. +The Olympics achieved huge benefits for Stratford and the East End. +And, we will do so again by creating opportunities for local people and firms close to Heathrow. +For our local communities alone we'll create 10,000 new apprenticeships, 40,000 new jobs and bring an end to youth unemployment around the airport. +Just as there were ahead of London 2012, there will be those that think the challenge of Heathrow expansion is too great. +I was told that Britain would be never be ready for the Games and that we would be embarrassed on the world stage. +The doubters were wrong on 2012 and they will be proved wrong on Heathrow. +There are always obstacles to be overcome, but Heathrow is answering every question asked of it. +Like the Olympics, Heathrow is an infrastructure project for the many, not just the few. +Expansion is an opportunity to create up to 180,000 new jobs, £211bn in economic growth, leaving a legacy of skills and employment both around the airport and across the UK. +We have a great team at Heathrow who have implemented an £11bn programme of infrastructure investment on time and on budget, from T5 - voted the world's best airport terminal five years in a row, to T2, built in the middle of the world's busiest two runways. +Now they stand ready to deliver a third runway, backed by £16 billion of private investment. +The London 2012 Games were a great success for the UK and I am confident that Heathrow expansion will be too. +It is time for us to channel that Olympic spirit and expand Heathrow, securing our trading future and creating a legacy of skills and employment that Britain can be proud of. +Lord Paul Deighton is chairman of the Heathrow Board and former Commercial Secretary to the Treasury +Adblock Plus, Facebook in "cat-and-mouse game" over ad blocking +For companies that make money from online advertising, attempts to circumvent ad-blocking software amount to a "cat-and-mouse game," according to one of the companies that makes that software. +On Thursday, just two days after Facebook announced it would be blocking ad blockers on its desktop site, Adblock Plus published a blog post saying that users could update their filters in its program to block ads on the social network once again. +On Tuesday, Facebook said that its desktop website would change the coding around its ads in order to make it more difficult for ad blockers to detect which parts of a page are ads. +But Adblock now says it has gotten around the new codes. +In a blog post, Adblock spokesperson Ben Williams wrote that "this sort of back-and-forth battle between the open source ad-blocking community and circumventers has been going on since ad blocking was invented," and that it is possible Facebook would come up with its own fix soon. +The fact that the world's largest social media company has entered the fight is a strong indication of just how big a concern ad blockers have become for the industry. +Globally, roughly 200 million people use ad blockers, according to a study last year from Pagefair and Adobe; nearly quadruple the number who used such software in 2013. +With 1.03 billion daily active users accessing Facebook via mobile devices, mobile advertising now accounts for 84 per cent of Facebook's advertising revenue. +The company is going after ad blockers on desktop however, because mobile ad blockers are not effective in Facebook's mobile apps for the social network and Instagram, a spokesperson said. +Desktop ads still account for enough revenue that Facebook judged such a move to be worth the investment. +Also on Tuesday, Facebook said it would be updating its "ad preferences" tool to give people more control over how ads are targeted to them. +On Thursday Facebook claimed that Adblock's new filters were concerning because they would also block some non-advertising content on the site. +"This isn't a good experience for people and we plan to address the issue," a Facebook spokesperson said in an e-mailed statement. +Ad blockers are a blunt instrument, which is why we've instead focused on building tools like Ad Preferences to put control in people's hands. +Woman run over on Swiss motorway in apparent suicide +The victim was lying on the motorway in the middle of the night. +Police are appealing for witnesses after a woman was run over by several vehicles on a motorway in the early hours of Thursday in an apparent act of suicide. +The incident happened on the A1 near Morges in the canton of Vaud just after midnight on Thursday. +A woman lay down in the dark on the road "in a desperate act" and was hit by several vehicles, Vaud police said in a statement. +Clearly looking to kill herself, the victim, a Swiss woman aged 49, was hit by several vehicles including a lorry. +She died at the scene. +Several of the drivers involved have already been interviewed but some are still unidentified, said police, who are calling for them and anyone else who witnessed the incident to come forward. +A criminal investigation has been opened, a "logical" step in a situation like this, lawyer Gilles Hofstetter told Le Tribune de Geneve. +However it remains to be seen if any of the drivers involved will face charges. +Was it possible to avoid impact? +That's what the prosecutor must determine," said Hofstetter. +Two other similar cases in the past five years suggest that drivers will not be held responsible. +In each case - both of which involved a person walking on the motorway in the dark - it was judged that motorists cannot expect to come across a pedestrian on the motorway in the middle of the night, said the paper. +Last year a police officer was acquitted of causing death by negligence after she hit and killed a man who was lying on the A1 near Paynerne one night in August 2014. +The 22-year-old victim had been drinking and had passed out on the road, the court heard. +The court found that the policewoman -- who was responding to an emergency call -- was driving in a manner that was justified and that the presence of a man on the road was a "completely exceptional and unpredictable situation," the judge said. +Anyone with information about Thursday's incident near Morges should call police on 021 644 83 46 or 021 644 44 44. +NASA climate model: Venus was once habitable +Venus was likely once habitable, according to the projections of a new NASA climate model. +Scientists at NASA's Goddard Institute for Space Studies developed a model to explore Venus' past using tools and algorithms similar to those employed by climate scientists. +The model was designed to determine whether or not Venus, with its hot, water-less surface and CO2-chocked atmosphere, might have once hosted Earth-like conditions. +Scientists have previously suggested that Venus' slow rotation rate is explained by its thick atmosphere. +But the latest simulation suggests Venus could have boasted a thin, Earth-like atmosphere and still spun slowly. +The model also looked at the topography of early Venus. +The planet likely featured more dry regions than Earth, but once had enough water and geographical variability to host life and guard against rapid evaporation. +Early Venus also benefited from a sun that was 30 percent dimmer. +"In the GISS model's simulation, Venus' slow spin exposes its dayside to the sun for almost two months at a time," GISS scientist Anthony Del Genio explained in a news release. +This warms the surface and produces rain that creates a thick layer of clouds, which acts like an umbrella to shield the surface from much of the solar heating. +The result is mean climate temperatures that are actually a few degrees cooler than Earth's today. +The model produced a story of Venus similar to the evolution previously hypothesized by planetary scientists. +Though likely once habitable, Venus was -- over the course of several billion years -- exposed to too much heat and ultraviolet light. +Its oceans evaporated and its water vapor was burned away by ultraviolet light. +As its hydrogen escaped, all that was left was a thick atmosphere of carbon dioxide with a deathly greenhouse gas effect -- thus, the Venus we know today. +Researchers shared the results of their new Venus climate model in the journal Geophysical Research Letters. +Patrick Roy resigns as Avalanche coach +Patrick Roy resigned as coach and vice president of the hockey operations of the Colorado Avalanche on Thursday, citing a lack of a voice within the team's decision-making process. +Colorado executive vice president/general manager Joe Sakic confirmed the move and noted that the club will begin a search for a new coach immediately. +"For the past three years, I have carried out my duties as head coach and vice president of hockey operations for the Colorado Avalanche with energy, passion and determination," the 50-year-old Roy said in the statement. +I have thought long and hard over the course of the summer about how I might improve this team to give it the depth it needs and bring it to a higher level. +To achieve this, the vision of the coach and VP-hockey operations needs to be perfectly aligned with that of the organization. +He must also have a say in the decisions that impact the team's performance. +These conditions are not currently met. +Sakic, who hired Roy on May 23, 2013, thanked Roy for his contributions to the team. +"Patrick informed me of his decision today," Sakic said. +We appreciate all he has done for our organization and wish him the best of luck in the future. +Roy was named the Jack Adams Award winner as the league's best coach during his rookie season with the Avalanche in 2013-14. +He guided the club to 112 points and a first-place finish in the Central Division, but Colorado was upset by Minnesota in the first round of the playoffs and has missed the postseason in each of the last two years. +The Avalanche posted a 39-39-4 mark in 2015-16 and fell five points shy of the Wild for the second wild-card spot in the Western Conference. +A Hall of Fame goaltender, Roy won four Stanley Cups -- two apiece with the Montreal Canadiens and the Avalanche. +North Sea oil workers resume talks, suspend strike +Labor strikes over pay for North Sea oil workers are suspended while all parties to the dispute sit down for a new round of talks, lead negotiators said. +Strikes against oilfield services company Wood Group have been staged sporadically on platforms in the North Sea operated by Royal Dutch Shell. +"Wood Group and the Unite and RMT unions can confirm we have agreed to restart the process for resolution of the current dispute," a joint statement read. +We will hold a number of full-day meetings over the next few weeks, starting early next week, to take a fresh look at the issues. +The labor unions said their recent action, which they said is the first in more than 25 years, was in protest of potential pay cuts of up to 30 percent. +Wood Group this year cut rates paid to its North Sea contractors by about 9 percent because of negative market pressures. +The company's rate reduction follows a 10 percent decrease for onshore contractors in 2014. +The company said additional cuts would give the company the room needed to move through the market downturn. +Shell, for its part, has trimmed thousands of people from its payroll and announced plans to leave oil and gas operations in up to 10 countries as it streamlines its operations in the wake of its mega-merger with British energy company BG Group. +Energy companies are under pressure from lower crude oil prices, an economic situation compounded by the British decision in June to leave the European Union. +Scottish Member of Parliament Dave Anderson met with labor leaders earlier this week to discuss one of the biggest labor disputes to strike the North Sea in a generation. +The North Sea, he said, is vital for the regional economy. +"In the North Sea and right across the country, we need an economy that works for the many and not just the few," he said in a statement. +Less than $1.4 billion in spending on new projects in the North Sea is expected in 2016, compared with an average of around $7 billion in the past five years. +Kepler measures spin rates of stars in Pleiades cluster +The latest mission by the Kepler space telescope has helped astronomers collect the most complete catalog of spin rates among the stars of the Pleiades cluster. +The new data is helping astronomers understand why stars in the cluster spin at varying rates, as well as how rotation periods relate to planet formation. +"We hope that by comparing our results to other star clusters, we will learn more about the relationship between a star's mass, its age, and even the history of its solar system," Luisa Rebull, a research scientist at Caltech's Infrared Processing and Analysis Center in Pasadena, said in a news release. +The Pleiades cluster is situated 445 light-years from Earth. +Many of the stars in the cluster are just now reaching adulthood, having been born roughly 125 million years ago. +They're spinning as fast as they ever will. +At their peak spin rates, these maturing stars eject large amounts of stellar wind. +As these winds travel across the stars' magnetic fields, they enact a braking effect on the stars. +As a star ages, its spin rate begins to slow down. +Kepler measures each star's spin rate by tracking the time between the appearance of recognizable starspots -- like sunspots. +The latest catalog of spin rates suggests more massive stars spin more slowly than less massive stars. +Rebull likens the stars to dancers, larger ones pirouetting more slowly than smaller ones. +"In the 'ballet' of the Pleiades, we see that slow rotators tend to be more massive, whereas the fastest rotators tend to be very light stars," said Rebull. +Because the Pleiades cluster is so close, it serves as an ideal cosmic laboratory to compare stellar qualities with spin rates. +"The Pleiades star cluster provides an anchor for theoretical models of stellar rotation going both directions, younger and older," said Rebull. +We still have a lot we want to learn about how, when and why stars slow their spin rates and hang up their 'dance shoes,' so to speak. +Rebull and her colleagues detailed their latest analysis of Pleiades spin rates in three new papers, soon to be published in the Astronomical Journal. +A controversial baseball star steps down +Alex Rodriguez' tears ran quicker than the US baseball star had run from base to base, in better days. +After his emotional announcement of retirement, the 41-year-old pro will wear his New York Yankees jersey for the last time on 12 August, against the Tampa Bay Rays. +"I love this game and this team." +"I'm saying goodbye to both of them," the 14-time All Star Major League Baseball (MLB) player explained. +Rodriguez was voted the most valuable player in the league three times, and in 2009 he won the World Series with the Yankees. +He signed a ten-year contract, which has brought him 27 million US dollars every year since 2007. +Until the end of the contract on 31 December 2017, he will work as a consultant and a youth coach - on full pay. +Rodriguez paid this back in terms of playing performance long ago. +With 696 home runs, 3114 hits and 2021 points for his team ("runs"), for the Seattle Mariners (1994 to 2000), the Texas Rangers (2001 to 2004) and since 2005, the Yankees, he has reached rather a few milestones. +Along with Hall of Fame members Hank Aaron and Willie Mays, there are only two other baseball players who can boast similar key statistics. +However, the 41-year-old cannot be welcomed into the baseball Hall of Fame. +Because no matter how successful Rodriguez - nicknamed "A-Rod" - was on the pitch, his behaviour off the pitch was just as controversial. +As far back as 2009 the superstar told ESPN that he had taken banned steroids between 2001 and 2003. +In August 2013 he was banned for 211 games until the end of 2014 for his involvement in the "biogenesis scandal". +Rodriguez was the main suspect accused of having received performance enhancing drugs via an anti-ageing clinic in Florida over a period of years. +After a legal battle, the ban was reduced to 162 matches. +"The league might even have done me a favour in 2014 - I'd played for 20 years without a break," Rodriguez said, summing things up. +Even his final days didn't go off without a bang. +While many baseball legends take to the great stage over their last few games, Rodriguez had to sit on the sidelines. +"My job isn't about a retirement tour." +"My job is about trying to win every game," stated Yankees coach Joe Girardi. +Nevertheless, Rodriguez, who was married to actress Cameron Diaz and who has been rumoured to have been linked to pop star Madonna and actress Kate Hudson, had the support of the fans of Yankees' arch rivals, Boston Red Sox. +"We want A-Rod," the fans sang as they were defeated 4:9 by Rodriguez' team. +2016 Olympics: Chen Xinyi, Silwia Danekowa and Adrian Zielinski are the first doping cases +Busted: After a sample tested positive for doping, weightlifter Adrian Zielinksi from Poland is not allowed to compete in Rio. +Rio de Janeiro - the 2016 Olympic Games have been overshadowed by the first official cases of doping. +One now-banned athlete had almost won a medal. +The first official doping cases of the Rio Olympic Games were announced ahead of the seventh day of the competition. +Chinese swimmer Chen Xinyi, 3000-meter hurdler Silwia Danekowa from Bulgaria and Polish weightlifter Adrian Zielinski tested positive in Brazil, and have been excluded. Just before the start of the athletics competition, which has not escaped criticism, this news comes at a bad time. +The Sunday before, Chen had revealed the presence of the diuretic hydrochlorothiazide, which is used to mask drugs. +The international sport tribunal CAS confirmed on Friday afternoon local time that she had been banned from the Olympic Games. +On Sunday, the 18-year-old had taken fourth place in the 100m Butterfly final - missing out on a bronze medal by just 0.09 seconds. +Chen was supposed to have taken part in the 50m Freestyle heats on Friday. +Chen applied to the International Olympic Committee (IOC) for a hearing and to have her B sample opened. +The national association is taking the instance "very seriously, and asks that Chen cooperate fully with the investigations," quoted Xinhua from a press release: "We will collaborate with the international sports tribunal CAS and will accept their decision". +For the first time in history, the CAS, not the IOC, is responsible for sanctioning sportspeople who test positive. +Also overnight in Rio, the news about Danekowa's positive test leaked out, and the 33-year-old went on the offensive herself. +"I had three tests, all of which were negative, and my fourth test was positive," which was "an unbelievable shock," she said to Bulgarian TV channel BNT. +She said she was innocent and that "the only explanation could be food supplements," the athlete explained. +According to the report, the banned substance involved was the blood doping chemical EPO. +Danekowa was suspended as a precaution, and according to BNT, a B sample also tested postive. +Bulgaria's Prime Minister Bojko Borissow spoke up immediately to criticise the athlete. +"I do not understand why sportspeople do not draw the right conclusions," he said: "We Bulgarians are under observation, so many have already been banned". +Almost all the weightlifters from the nation, which has been plagued by doping, were not allowed to participate in Rio. +On Friday the case of "Adrian Zielinski" was announced: the winner at the London Olympics in the weight category of up to 85 kg had tested positive for the anabolic steroid Nandrolone three days earlier, just like his brother. +Both deny taking it, but neither was allowed to compete in the weight category of up to 94 kg. +Ahead of the athletes' start, the case of Danekowa is another heavy blow for the reputation of the entire sport. +The World Federation IAAF had banned the entire Russian team, with one exception, for systematic doping, and running nation Kenya also created a mass of bad news in Rio. +In swimming, China's earlier offence had caused heated disputes between the athletes themselves. +Camille Lacourt, from France, spoke out harshly against Chinese Olympic winner Sun Yang. +"Sun Yang's pee is purple." +"When I look at the podium for the 200m Freestyle, I want to throw up," Lacourt said on French radio. +In addition, Sun was at the middle of an argument with Mack Horton, from Australia. +"I have no time and no respect for drug cheats," he said. +Sun tested positive for the stimulant trimetazidine at the Chinese championships in 2014, but only had to sit out for a three-month ban. +Data theft: This is how perfidiously hackers extort ransom money +Programmers of extortion malware are currently targeting companies - with success. +According to a recent survey of 540 companies in North America, the UK and Germany by Malwarebytes, the malware defence specialists, 40 percent of the companies surveyed had fallen victim to one, two, or several attacks involving extortion software in the past twelve months. +In Germany, around 20 percent of the companies had already been targeted by a ransomware attack. +40 percent of the victims willingly paid up the ransom demanded by the perpetrators so that they were able to use their systems and data that had been affected by the attack. +According to Malwarebytes' observations, it is noticeable that perpetrators are tailoring their extortion software to attacks on corporate networks. +If they are successful in that domain, the ransom money they can demand is significantly higher than it would be for private users. +"We are currently seeing harmful software develop terrifyingly quickly," explains Malwarebytes' CEO, Marcin Kleczynski, in an interview with "Die Welt" newspaper. +In 2008, most malware programmes were still focused on sending out adverts. +Then perpetrators discovered extortion software. +Private users were initially the target, but the shift to corporate attacks took place terrifyingly quickly over the past few months. +Ransomware follows a simple pattern: Once activated on a user's computer, it seeks out files that have not been edited for a long time, like Word, Excel or database files, as well as image and video archives. +The ransomware encrypts these files, and deletes the originals for good. +Finally, the software presents the extortioner's demands. +The victim has to transfer money - generally in the form of "Bitcoins", a cryptocurrency - to get the decryption code needed for the files. +But while it's a personal photo database that's at play for private users, it's sensitive customer data or project databases needed for the continuation of projects that are the focus for companies. +As a result, the damage from a ransomware hit is greater. +22 percent of German companies affected reported that they had suffered a fall in turnover due to ransomware, 13 percent had to cease trading entirely, and in one instance, people's lives were put at risk. +In Germany, several hospitals have already fallen victim to attacks, and their patients were placed under serious threat as a result of the loss of medical records. +"We always tell victims not to pay up: that simply exacerbates the problem," explains Kleczynski. +But 80 to 90 percent of companies who pay up get their files back. +Faced with operations coming to a standstill, it is hard for managers to say no to the perpetrators' demands. +Then again, the hackers know that, and do all they can to build up a good reputation. +A recent study saw security researchers from F-Secure examine user interfaces and contact with extortioners. They came to the conclusion that perpetrators really do try to construct a kind of customer service system so that they can get more money. +They explain to their victims via chat how to pay using Bitcoin, set up freely-accessible support websites, or decrypt sample files for free. +And while private individuals are targeted for sums of a few hundred euros, companies sometimes have to bargain hard and pay out five-figure sums to get their files back decrypted. +Faced with the potentially high and relatively risk-free profits from ransomware extortion, hackers are becoming more and more professional, splitting up their work, explains security expert Chester Wisniewski from antivirus provider Sophos: "An individual can write a ransomware program within about a week." +However, it is more likely that three or four people will be involved. +The programmers then sell their malware to the actual extortioners in the form of a set of software building blocks. +Malware kits to date, including the malware itself, advice and additional tools, have been sold for a one-off fixed fee of between 1000 and 10,000 dollars. +"The kits include an adapter tool so that smaller configurations can be constructed, and the appearance and branding can be changed," says Wisniewski. +The extortioners then look out additional hackers to distribute the freshly prepared software between victims. +We live in a service economy. +So you just log into an underground forum, buy the set from a criminal, and task someone else with installing the software on as many PCs as possible. +There's a payment made for every computer infected. +"Normally, criminals then task spammers with distribution," explains Wisniewski. +Now, many companies are aware of the risks of ransomware, and they are protecting their data better. +More than 50 percent of companies' IT specialists in Maywarebytes' survey relied on using file back-ups and scanner software to beat ransomware. +As a result, perpetrators are already trying out new strategies. +"If simply encrypting files isn't enough of a threat to make an extortion request be granted, the perpetrators threaten to publish sensitive files instead, such as customer lists, or price calculations," explains Malwarebytes' CEO, Marcin Kleczynski. +This means that the risk potential is much higher than before, depending on the type of file. +In the future, perpetrators will be able to focus themselves on brand-new targets within the internet of things. +At the Defcon hacker conference, security researchers demonstrated how they could take control of a thermostat connected to the internet. +In the midst of winter, many victims would pay a ransom to have their blocked heating turned back on. +In the future, if hackers switch off an entire production line in a factory instead of someone's heating, ransomware could also be a issue in Industry 4.0. +Something for every situation +HONDA HR-V is practical and perfect for everyday use +Honda wants to cram everything into the small HR-V: a bit of an SUV, a bit of a coupé, bundled up with the versatility of a minivan. +It seems a bit too much, but the HR-V, built on the same new platform as the new Jazz, does indeed prove itself to be exceptionally flexible in daily use. +Although the HR-V, at just 1.60m tall, seems small, passengers in the front and the back have got plenty of room, it's not a squeeze at all. +The materials used in the interior are well crafted, and have a pleasant appearance - just the surface of the dashboard lets the side down. +The HR-V is more versatile than comparable vehicles in terms of its loading space. +There isn't just a boot of 453 l with the seats up, and 1026 l with the seats down; there are the "magic seats" too. +This is rather less magical than it sounds: the seats in the back can be flipped up like cinema seats to reveal additional loading space, measuring 1.24 m from floor to ceiling. +The boot is easy to load, but the load height of 650 mm is a bit higher than it is in the Peugeot 2008, which is a comparable model. +The 1.6 l diesel engine we tested, with 88 kW/120 horsepower accelerates the HR-V powerfully, thanks to the torque of up to 300 Nm across a wide range of speeds. +However, it could certainly do its work a bit more quietly. +Everyday consumption of 4.7 l/100 km was pleasing. +There is an additional motor: a 1.5 l petrol engine with 96 kW/130 horsepower. +All-wheel drive is not available. +Its handling is balanced, a good compromise between speed and comfort. +The steering could be a bit more direct, however. +In the top-flight "Executive" version, which we tested, the fittings leave nothing to be desired. +The safety systems include city emergency braking assistant (functions up to a speed of 32), collision warning system, and the lane departure warning system. +The collision warning system is irritating occasionally: when parking, it sees lots of obstacles as "approaching objects". +The high-beam assistant system is very reliable. +And the intelligent speed regulator reacts to traffic signage, and reduces the vehicle's speed if necessary. +However, full connectivity is only available for the top-of-the-range model: 7 inch touchscreen, satnav, app integration, and more. +There are two USB ports and a HDMI port under the armrest, which makes them rather tricky to access. +It costs around 29,000 euros for a top-of-the-range diesel model, which is fair. +If you don't want to invest quite that much, the petrol model is available from 20,000 euros, and diesel from 23,000 euros. +The motors comply with euro 6 emissions standards. +With the HR-V, Honda is offering a diverse car that is perfect for everyday driving. +Airline is not liable: Fall on passenger boarding bridge +An airline will not be liable for a passenger's fall on a passenger boarding bridge. +This is because liability only applies for risks typical for aviation travel, the Higher Regional Court of Dusseldorf argued (Az.: 18 U 124/14). +The claimant had broken a kneecap in the fall. +However, the accident could have happened anywhere - it was one of the ordinary risks of life, pronounced the court. +The airline did not have to pay the man any compensation. +When do organisers pay if illness strikes? +Travellers who fall ill will only get their money back when they return home if there is no doubt that their illness was caused by something within their hotel. +However, this is only the case if more than ten percent of visitors can be proved to have suffered the same symptoms. +In this case, a family were stricken with diarrhoea and vomiting on the second day of their holiday in Turkey. +They spent almost all their holiday in their room. +The holidaymakers blamed a malfunctioning sewage treatment plant, which they believed to have polluted the seawater. +The family took the opinion that the holiday was unsatisfactory - and took the organiser to court. +The claimants had no luck in court. +It was true that the waste treatment plant was suffering from a fault. +But the organiser only found out about this just before the claimants departed. +Until that date, the organiser had to assume that the seawater was acceptable. +According to the judgement, the organiser had not violated its information obligation. +In addition, no contamination was found in water samples. +When several hotel guests fall ill - possibly by infecting each other - the court views this as a general life risk. +Only 38 of 691 guests fell ill. +De Maizière said that many people were worried about further attacks following the violence perpetrated by refugees in Würzburg and Ansbach in July. +He said that the state must react to the threat of terrorism with prudence and resolve. +One thing is for sure: Our country will not react to the perpetrators' violence with hatred and division. +We will not give the terrorists this victory. +If perpetrators have to leave the country quicker, that will boost security and increase the general public's approval of refugee politics. +De Maizière wants the proposals to be implemented before the federal elections in 2017. +He also announced that security services would receive more staff, to the tune of "a mid-four figure sum over several years". +Advertising for terrorism must be punishable once again. +Video surveillance is to be improved, and gun laws to be amended so that purchasing weapons online, in particular, is made more difficult. +Doctors' confidentiality obligations, recently the subject of much discussion, are to remain, according to De Maizière. +However, he wants to talk to doctors to find solutions to reduce the risk to the general public with regard to mental illness, he said. +The Minister felt that improved social care was important to counteract the radicalisation of refugees. +Teachers must be better trained for dealing with traumatised individuals. +De Maizière is planning to employ undercover agents to hunt down criminals in particular areas of the Internet (the Dark Web). +SPD Head Gabriel said that "the SPD is prepared to discuss anything that will increase security further". +He said it was important that the Minister of the Interior had spoken out clearly against actionism. +"That was a slap in the face for agitators in the CDU/CSU," said Gabriel on Friday to the newspapers of the Funke media group. +De Maizière had previously turned down calls from the coalition for a burka ban and the abolition of dual nationality. +He views an overarching ban of full veils as problematic under the constitution. +You can't ban everything you're opposed to, and I'm opposed to the wearing of the burka. +We can talk about the law with regard to traffic, or for witnesses appearing in court. +Head of the Greens, Simone Peter, accused the Minister of wanting to use new anti-terror packages to create an air of energy and ability to act. +Head of the Left, Bernd Riexinger, said that "smooth talking and tightening up residency laws are not going to make the people in this country any more safe". +Better flow of traffic on the motorway slip road +Traffic jams are a regular occurrence on the bypass - here's a photo from November. +But that is about to change: the right-hand turning lane is to be extended. +This is good news for all drivers stuck in rush-hour traffic on the bypass every evening as they drive onto the motorway slip road (A43). +Next Tuesday and Wednesday (16/17 August), the State Roadworks Office will extendthe right-hand turning lane in the area between Hammer Straße and the exit from Weseler Straße by 700 metres. +This means that drivers will be able to feed in directly from Hammer Straße. +The major advantage is that traffic will split earlier, improving overall circulation on the busy section of main road 51. +The CDU fraction in the Münster (West) district administration came up with the idea to lengthen the exit. +The traffic on the slip road is particularly bad for drivers between 5pm and 7pm. +On weekdays, the traffic jam stretches to the bridge over Albersloher Weg - and sometimes even goes over it. +This is caused by the bottleneck on the B51, just before the exit onto Weseler Straße. +From here, there is only a single lane of traffic over the motorway bridge. +The second lane was removed a good eighteen months ago. +The reason for this was that structural analysis had shown that the bridge was no longer capable of supporting the weight caused by two lanes, particularly the weight of heavy goods vehicles. +The relevant authorities cannot say how long this bottleneck, and the associated rush-hour traffic, will last. +It's going to be a matter of years: officially, the bridge will remain in use until 2034. +The district authorities deliberately chose the less busy period of the school holidays for the extension of the right-hand turning lane, because it will cause delays. +Traffic will be diverted past the construction site in a single lane on Tuesday and Wednesday. +Intercultural journey: Cultural programme for schools +The international class from the forest school has been to see "The Invisible House" at the theatre. +The "Nima's" association and Young Theatre are now planning a musical project. +The "Nima's" association enables young people from a migrant or refugee background to visit cultural institutions in Münster. +The "International Class" at the Kinderhaus forest school saw a performance of the award-winning play "The Invisible House" at the Young Theatre in Münster. +Within the framework of the "Intercultural Journey" set up by Nima's, 19 pupils aged between 11 and 15 saw the play in the small house. +The association's objective is to encourage cultural integration of young people from migrant and refugee backgrounds, and since the start of the year, it has offered schools with welcome classes with the chance to attend cultural institutions in Münster as part of this project. +Most young people in the class arrived in Münster between September 2015 and March 2016 from Afghanistan, Iran, Serbia and Syria, among others, and spoke little German. +Thanks to the choreography, scenic images and video animations they were able to follow the plot regardless, according to the press release from Münster's Young Theatre. +Nima's, founded by Dr. Tannaz Westerberg from Sprakel, and the Young Theatre, will work on a musical theatre project together over the next season. +From October to December, young people aged between 14 and 20 with and without a migrant and refugee background will have the chance to attend professionally-led courses for singing, dancing, acting, and music. +There are also plans for acting and theatrical language training for children and families. +The "Intercultural Journey" project continues. +As a result of the increase in the number of refugees, the association is expecting that many classes will want to take part. +Rain replaces shooting stars: There is hope that the weather will improve +For people hoping to spot shooting stars in south-west Germany on Thursday night, the weather put paid to their plans - but all is not lost. +The President of the Observatory of Welzheim, Hans-Ulrich Keller, said on Friday morning that the clouds and rain overnight meant that conditions were not ideal for observing the celestial show. +We are pinning our hopes on Friday night. +The weather is supposed to be good, so we'll definitely see lots of shooting stars in the sky. +The shooting stars are the Perseids: some of the quickest shooting stars, travelling at 216000 kilometres an hour. +Their name refers to the fact that they seem to come from the constellation of Perseus, which is visible in the north-east. +Silent night: Tips to fight sleep disorders +In the evening your mind won't stop whirring, you lie awake for hours each night, and by the time morning comes, sleep is far from your mind even well before your alarm goes off. +This is anything but relaxing. +If you suffer from these issues, you're in good company: According to the Robert Koch Institute, around a quarter of adults suffer from sleep disorders, and more than ten percent find that they often or always wake up not feeling refreshed. +How do sleep problems or sleep disorders manifest themselves? +There are various forms of sleep disorders, and they can have many causes, emphasises Hans-Günter Weeß, President of the German Association for Sleep Research and Sleep Medicine. +What people generally understand by sleep disorders is insomnia: a problem with falling asleep and sleeping through the night. +Many people feel that their sleep throughout the night is unsatisfactory or inadequate, says Jens Wagenknecht, Member of the Board of the German Association of General Practicioners, who practices in Varel in Lower Saxony. +What is behind sleep disorders? +The causes of sleep disorders are complex. +Biological, psychological or behavioural factors can be to blame, along with medication. +A sleep disorder is often a reflection of another illness. +"Waking up very early is common with depression, in particular," says Weeß. +And it can be the case that several factors have an impact on each other. +If you have a slipped disk, for example, you might find it hard to lie down, wake up every couple of hours, and start to grumble about everyday problems and worries, suggests Weeß as an example. +That causes tension, and it is impossible to sleep. +When should you see your doctor about sleep disorders? +If, over the course of a month, you sleep poorly for at least three nights a week, and find that this impacts you during the day, you should see a doctor, advises Weeß. +They can impact in various different ways: You could be exhausted, tired, poorly rested, suffer from difficulties concentrating and staying alert, be irritable, have mood swings or physical complains such as stomach ache or headaches. +To be able to treat a sleep disorder, it is important to work out what is causing it. +Behaviour changes, cognitive behavioural therapy or medication - with traditional sleeping tablets only being used in exceptional circumstances and for a maximum of two weeks - are all options for treatment. +There are hardly any registered sleep doctors in Germany, emphasises Prof. Ingo Fietze, Head of the Interdisciplinary Centre for Sleep Medicine at the Charité University Medicine Centre in Berlin. +As a result, you should first turn to your GP if you're suffering with a sleep disorder, recommends Weeß. +Your doctor will examine you to see if the problems have a physical cause. +Who should go to a sleep lab, and what happens there? +Doctors recommend an examination in a sleep lab for patients whose snoring disrupts their breathing, for people who feel abnormally sleepy during the day, for sleepwalkers, or if the cause of a sleep disorder cannot be pinpointed, explains Fietze. +You don't have to prepare for the examination at all. +You should spend the day normally. +"Just - please don't take an afternoon nap," says Fietze. +After being cabled up, you head to bed at your normal time. +In addition to the electrodes on the body, you wear a nasal cannula, a belt across your chest and a sensor on your finger. +In addition, a camera mounted on the ceiling records the sleeper. +How can those affected get a grip on the problems they are experiencing? +There are a fair few areas that can be adjusted to encourage a better night's sleep. +Weeß lists them: going to bed and getting up a regular times, not staying in bed too long, not sleeping during the day, not watching television to get to sleep, avoiding alcohol, and not looking at the clock during the night - because then you start working out times straight away, and that's not helpful at all. +What the jungle camp has got to do with missing swimming medals +Former German swimmer Markus Deibler has posted on Facebook about the disappointing performance of the DSV team at the Olympics. +In December 2014 he got his first gold medal at the Short Course Swimming Championships in Doha, while setting his first world record. +Now the former DSV athlete Markus Deibler has come forward on Facebook to defend his ex-teammates from criticism. +"In a country in which an Olympic champion is awarded 20,000 euros and the King of the Jungle gets 150,000 euros, nobody should wonder why medals aren't being won," the 26-year-old wrote on Thursday night on his Facebook page. +The remuneration system in swimming is poor, but doping tests, on the other hand, are very good, he says. +This means that we cannot compete with countries who pay a lot and that don't pay as much attention to doping, or even encourage it. +"I'm not saying that we should stop our tests," he went on to explain. +If he wanted to make a comeback, Deibler would have to register with the National Anti-Doping Agency for Germany (NADA) nine months before he started. +This is exactly how it should be with countries. +"If you don't submit to WADA/FINA checks a particular amount of time before the World Championships/Olympics, then you shouldn't be able to take part," the Hamburg resident stated, who now runs an ice-cream parlour. +Airport: A gang of luggage thieves are arrested +Professional thieves at Dusseldorf airport +Plain clothes officers from Dusseldorf's police force managed to arrest two women and two men, aged between 50 and 61, on Thursday. +The suspects had worked as a group to steal several bags and items of luggage. +Around 9.30 p.m. civil servants in Dusseldorf Airport recognised a gang known to the police from previous thefts. +The two men and two women had committed multiple crimes since mid-July, and had committed the offences as a group, dividing up their work in a particularly professional way. +The specialists from the 34th police inspectorate were able to prove that the thieves, who had travelled to Germany to commit the crimes, had committed four crimes. +They had made more than 15,000 euros as a result. +Old buildings, a couple of little linden trees, and a few cobblestones among them: at first glance, Berlin-Friedrichshain's Rigaer Straße doesn't look as if it's one of the streets that the police consider to be among the most dangerous in the city. +If you walk along the street from east to west, you come across playgrounds, a freshly painted kindergarten and a health-food shop. +Someone has spraypainted "horrid!" on the facade of a house. +Opposite a Lidl, due to be pulled down soon, construction is already underway: by 2017, a building with large windows and 133 new apartments to rend is expected to be constructed. +Articles on this "trendy district", as the property company responsible has dubbed Friedrichshain, have been illustrated with pictures of burning cars over the past few weeks. +The reason for this is house 94: At first, it was occupied by squatters, then the inhabitants had rental contracts, but some rooms on the ground floor are still occupied by squatters and used for events. +Berlin's Senator of the Interior Henkel had called multiple times since the start of the year for the police to take a hard line against the project that has made the area a "no-go zone" for police and singled out 94 as the starting point for autonomous violence. +After the rooms on the ground floor, the Kadterschmiede, were cleared on 22 June by 300 police officers, the police patrolled the area for three weeks, according to official statements, with 30 to 40 officers and three vans, closing parts of the street and preventing visitors from accessing house 94. +During this period, builders renovated the rooms on behalf of the unidentified owner of the house. +On 13 July Berlin's Administrative Court ruled that the clearing was illegal, and, one day later, police and builders left the site, to the cheers of supporters and residents. +On this summer afternoon, the street seemed peaceful: parents were out walking with their children, people were sitting on their houses' steps in the sunshine, other people were chatting in front of the off-licence. +Near the house project there is a primary school and a kindergarten. +Far-left violence is not what worries most residents the most: Kerstin Neugebauer, who has lived in the district since 1999, and Jana*, who has brought three children up here, are mainly irritated by the police presence. +They share the inhabitants of the housing project's fears of rising rents and gentrification. +It doesn't sound like a district that wants more police protection against left-wing vandalism. +The schisms that Berlin's Senator for the Interior and the police believe to have opened up between the squatters in the house and their neighbours do not exist. +Friedrichshain, in the east of Berlin, was traditionally a working-class neighbourhood. Even today, it has a lower average income and a higher risk of poverty than the rest of the city. +Squatters in houses and the residential projects they spawn are nothing new in the district: in 1990 numerous houses in the then-GDR were full of squatters, including almost all of Mainzer Straßer, near Rigauer. +While those on Mainzerstraße were cleared out during a real street battle with a large police deployment, many of the projects in Rigauer were legalised, and are to a certain extent still inhabited by the people who first squatted there 26 years ago. +At the same time, the district has become more and more of a magnet for tourists and Berlin residents who come from all over the world: residents from GDR times and former squatters are now sharing their district with them. +This can be felt in the rents, which have climbed by almost 60 percent since 2009. +Many of the new buildings in Rigauer are seen as symbols of this development: this is clear from their broken windows or freshly painted facades splattered by paint bombs. +No other street has been mentioned so often this year in connection with "autonomous left-wing violence". +One reason for not all neighbours seeing this as a problem could be that they are not directly affected by crime: according to statistics, almost all crimes such as bodily harm are directed against the police. +The majority of crimes are damage to property, which tend to target new buildings and recently renovated properties. +For Kerstin Neugebauer, who has been living in a block of flats next-door to controversial number 94 for 17 years, there can be no talk of uncertainty. +She is calm about acts of violence: the people at number 94 are her neighbours, they certainly had nothing to do with it. +Even the notorious burning cars have not played a role in Rigaer for a long time. +The trained architect does not see her street as a crime flashpoint - quite the opposite: "Here we help each other, live together along the street, and talk to each other more than elsewhere". +Neugebauer chose to move to Rigauer Straße - and she chose to stay there. +This is also why it was so important to her that residents got their street back: back from the police, politicians and the media who suddenly started claiming how important the district was in July. +But in the eyes of residents like Neugebauer, the street is still being taken away: by impersonal new developments in old empty sites, which drive out old residents. +"They are freehold flats, and most people here aren't interested in that - people here generally aren't so well-off," she said. +"I absolutely cannot condone violence and destruction." +But what should you do when nobody listens to you? +Then everyone gets frustrated, including the police and residents. +Kerstin Neugebauer has little sympathy for people who have moved in and are irritated by paint bombs: The housing project and the left-wing scene are part of the district. +If you move here, you should be aware of that - just like someone who moves into an area full of pubs should know they can't really complain about the noise. +All people only described using their forenames have requested that their real names are not used +Urbach: Annika Deutscle is the new Commissioner for Refugees +Annika Deutschle is the contact person for integration and organisation. +She will also work on-site as a social worker. +Annika Deuschle has been the Commissioner for Refugees for Urbach since July. +The social education worker will assist the management team run by Achim Grockenberger. +She views herself as a point-of-contact for all involved: refugees, people from the working group for refugees, administrators, authorities, and anyone else. +Regine Kunde from the working group said that the volunteers are more than grateful that Deuschle is now available to work as a jack-of-all-trades to help anyone experiencing difficulties. +That's what some people said when management posted the advert for the job - meaning it less in a mocking way, and more with reference to the number of tasks that were to be performed. +They were looking for a manager with people skills and communication skills, combined with years of experience in social work - a real jack-of-all-trades. +However, managerial work is not how she spends most of her time, Annika Deuschle says. +It is primarily about organisation, working on-site with people, even in the background, and networking, she says. +The 31-year-old has been in post for around six weeks. +She has taken the 50% job for a fixed term of three years. +It was high time," Regine Kunde said, that Annika Deuschle offered support to voluntary and full-time workers. +There are major problems, minor problems, organisational problems, problems with people, comprehension problems. +New containers will soon be located in Wasenstraße +For a while, one major problem has been finding homes subsequently for refugees that have been given certified status. +Communes themselves are responsible for subsequent accommodation. +They have to house the refugees in their own properties or in rented properties. +Communes themselves have to bear the costs for constructing, renting or renovating this accommodation. +Responsibility switches from district administration to communes and job centres. +The problem: Properties are free, but not every landlord is prepared to let. +The search has been very difficult for a while. +De facto, the administration cannot find any private homes. +According to Deuschle, being reliant on private homes has not worked. +This is why the commune's homes need to be beefed up, as it is so neatly put. +Consequently new containers will soon be located in Wasenstraße. +But homes alone will not do the trick. +Perspective is the key word, and Regine Kunde and Annika Deuschle agree on that score. +In addition to a fixed abode, internships, apprenticeships, school places, "one-euro" traineeship jobs and temporary jobs need to be found or set up for refugees and migrants. +"More jobs would be good," reports Regine Kunde. +Many people work in builder's yards or help caretakers, or do voluntary work - and that provides motivation in a very orderly way, as Annika Deuschle reports. +She hopes that working for the community leads to a positive public perception. +This is not "employment therapy". +Being active doesn't just mean working. +The day needs a fixed structure, Deuschle and Kunde say. +People need to develop a sense of belonging. +Consequently there is a need to provide sports, contact to locals, and, above all, language courses. +Professional courses are rare. +There is where the administration and volunteers can get involved. +She says it is key that refugees feel as if they are wanted and welcome in Germany. +The length of time that processes take is a problem. +They have to explain to refugees that it will take that long, and that the time can be filled productively - for example, with language courses. +If someone feels that they can't help anyone in Urbach, that they aren't allowed to work, and that they are useless, they'll never integrate. +The clear majority are motivated. +But there are also problem cases, Kunde says honestly, "people for whom nothing works". As a result, Deuschle and Kunde's work will always be to motivate others. +All told, this is "a mammoth task". +A tricky question: After recent events, are the two women worried about radicalisation, even in a small commune like Urbach? +"No," Regine Kunde said clearly, "which some people might call naive". She could not and did not want to ignore the chance of a residual risk remaining. +However, volunteers are already aware of this. +These issues are already discussed by the refugees. +They were afraid that the attackers would bring them into total disrepute. +"They want to show they have nothing to do with it," Regine Kunde said. +Many of them would like to stay in Urbach. +So full-time and volunteer staff have to keep an eye open for jobs in the town and across the region. +But they always have in the back of their mind that a new group of refugees and migrants could soon be arriving in Urbach. +Does Germany need a cap? +Politicians shy away from answering this question. +It is unfair to show them volunteers on site. +"In Urbach we've not got to where we wanted to be quite yet," said Annika Deuschle. +The situation would ease a bit if they did not receive any new refugees. +Regine Kunde also makes clear that the residents of Urbach have their hands full with integrating the refugees who have arrived to date. +Currently they amount to around 100 people, predominantly young men. +But when people are in need, you've got to help them - and both women agree on that. +The political situation is so complicated that there are no easy answers to be found there. +Schorndorf: Search for intruders made by helicopter +The police helicopter flew above various areas for about an hour - without success. +Two unknown men broke into an apartment in an apartment building in Lindenweg on Friday morning at around 8.50am. +The residents surprised the two men, who fled. +The two men were between 1.65m and 1.70m tall, probably wearing masks, both wearing blue jeans and black hooded tops. +They were heading towards the centre of town. +The police launched several strip patrols and a police helicopter to try and find them. +Without success. +It may be the case that the unknown assailants were recognised near the apartment or during their escape. +Baden-Württemberg: Police launch investigation after bikers attack a snack bar +After an attack on a snack stand in Ulm, police have launched investigations against six suspects who associate with the biker community for a serious breach of the peace. +House searches had revealed evidence and drugs, the police revealed on Friday. +According to the police, around 20 masked men from a biker-esque clan had thrown bottles and stones against the window of the snack bar. +Afterwards, two customers were attacked, one of whom was slightly injured. +Then they fled. +Damage amounting to 10,000 euros was caused to the snack bar and the neighbouring building. +Investigators believe it was a dispute among Ulm's biker gangs, between a Kurdish gang and a Turkish gang. +Thüringen: Zeiss Meditec comes closer to reaching a billion in turnover +Strong demand for medical technology in Asia has boosted Carl Zeiss Meditec's turnover. +Over the first nine months of the business year that started in October, the company's turnover grew by 6.7 percent to 789.6 million euros, as the listed company reported on Friday in Jena. +Its business in Asia grew disproportionately, by 17.1 percent. +Profits before interest and taxes increased from 89.5 million euros to 110.5 million euros, according to the interim report. +The Jena-based medical technology company wants to cross a turnover threshold of one billion euros this year, said its Board of Directors. +Zeiss Meditec produces devices and equipment for doctors' practices and clinics. +The company is owned by the Carl Zeiss optics and electronics firm (Oberkochen), and employs just under 3000 people. diff --git a/mitigating_bias/train/BERTScore/bert_score/get_rescale_baseline/README.md b/mitigating_bias/train/BERTScore/bert_score/get_rescale_baseline/README.md new file mode 100644 index 0000000..d67434d --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/get_rescale_baseline/README.md @@ -0,0 +1,15 @@ +# Computing rescale baselines for English models +### Downloading the dataset +This downloads the WMT17 English text data. +```sh +bash download_text_data.sh +``` + +### Tuning the models +Here is an example of getting the rescale baseline files of two models +```sh +python get_rescale_baseline.py --lang en -b 16 -m \ + microsoft/deberta-large \ + microsoft/deberta-large-mnli +``` +The baseline files will be in `rescale_baseline` folder \ No newline at end of file diff --git a/mitigating_bias/train/BERTScore/bert_score/get_rescale_baseline/download_text_data.sh b/mitigating_bias/train/BERTScore/bert_score/get_rescale_baseline/download_text_data.sh new file mode 100644 index 0000000..745bb9f --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/get_rescale_baseline/download_text_data.sh @@ -0,0 +1,8 @@ +mkdir -p data +cd data +if ! [ -f news.2017.en.shuffled.deduped ]; then + wget http://data.statmt.org/wmt18/translation-task/news.2017.en.shuffled.deduped.gz + gzip -d news.2017.en.shuffled.deduped.gz +fi + +echo "finish downloading data" \ No newline at end of file diff --git a/mitigating_bias/train/BERTScore/bert_score/get_rescale_baseline/get_baseline_example.sh b/mitigating_bias/train/BERTScore/bert_score/get_rescale_baseline/get_baseline_example.sh new file mode 100644 index 0000000..2d096f4 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/get_rescale_baseline/get_baseline_example.sh @@ -0,0 +1,4 @@ +bash download_text_data.sh +python get_rescale_baseline.py --lang en -b 16 -m \ + microsoft/deberta-large \ + microsoft/deberta-large-mnli \ diff --git a/mitigating_bias/train/BERTScore/bert_score/get_rescale_baseline/get_rescale_baseline.py b/mitigating_bias/train/BERTScore/bert_score/get_rescale_baseline/get_rescale_baseline.py new file mode 100644 index 0000000..ec15d67 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/get_rescale_baseline/get_rescale_baseline.py @@ -0,0 +1,85 @@ +import matplotlib +import matplotlib.pyplot as plt +import bert_score +import torch +from random import shuffle +import sacrebleu +import numpy as np +import pandas as pd +from tqdm.auto import tqdm +import os +import argparse +import gzip + + +def get_data(lang="en"): + + if lang == "en": + file_path = "data/news.2017.en.shuffled.deduped" + elif lang == "zh": + file_path = "data/paracrawl/crawl_chinese.txt" + else: + file_path = f"data/paracrawl/rand_{lang}.txt" + + with open(file_path, "r") as f: + lines = [] + for i, line in enumerate(f): + if i == 1_000_000: + break + line = line.strip() + if len(line.split(" ")) < 32 and len(line.split(" ")) > 0: + lines.append(line) + + samples = np.random.choice(range(len(lines)), size=(2, len(lines) // 2), replace=False) + + hyp = [lines[i] for i in samples[0]] + cand = [lines[i] for i in samples[1]] + + return hyp, cand + + +def chunk(l, n): + # looping till length l + for i in range(0, len(l), n): + yield l[i : i + n] + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Process some integers.") + parser.add_argument("--lang", type=str, required=True, help="language to compute baseline with") + parser.add_argument("-m", "--model", nargs="+", help="models to tune") + parser.add_argument("-b", "--batch_size", type=int, default=64) + + args = parser.parse_args() + + hyp, cand = get_data(lang=args.lang) + + for model_type in args.model: + baseline_file_path = f"rescale_baseline/{args.lang}/{model_type}.tsv" + if os.path.isfile(baseline_file_path): + print(f"{model_type} baseline exists for {args.lang}") + continue + else: + print(f"computing baseline for {model_type} on {args.lang}") + scorer = bert_score.BERTScorer(model_type=model_type, all_layers=True) + with torch.no_grad(): + score_means = None + count = 0 + for batches in tqdm(chunk(list(zip(hyp, cand)), 1000), total=len(hyp) / 1000): + batch_hyp, batch_cand = zip(*batches) + scores = scorer.score(batch_hyp, batch_cand, batch_size=args.batch_size) + scores = torch.stack(scores, dim=0) + if score_means is None: + score_means = scores.mean(dim=-1) + else: + score_means = score_means * count / (count + len(batches)) + scores.mean(dim=-1) * len( + batches + ) / (count + len(batches)) + count += len(batches) + + pd_baselines = pd.DataFrame(score_means.numpy().transpose(), columns=["P", "R", "F"]) + pd_baselines.index.name = "LAYER" + + os.makedirs(os.path.dirname(baseline_file_path), exist_ok=True) + pd_baselines.to_csv(baseline_file_path) + del scorer diff --git a/mitigating_bias/train/BERTScore/bert_score/journal/rescale_baseline.md b/mitigating_bias/train/BERTScore/bert_score/journal/rescale_baseline.md new file mode 100644 index 0000000..077aefd --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/journal/rescale_baseline.md @@ -0,0 +1,58 @@ +# Rescaling BERTScore with Baselines + +BERTScore computes a sentence-level similarity score by making use of token-level similarities, +produced by cosine similarities between contextual embeddings. +The numerical range of BERTScore is between -1 and 1, the same as the underlying cosine similarity. +In practice, however, BERTscore is usually found to be in a small range. +For an extreme case, BERTScore computed with the large RoBERTa model often is between 0.85 and 0.95. + +Although BERTscore correlates highly with human judgment in spite of the above mentioned caveat, BERTScore will +be easier to interpret and work with if it has a natural range (for example, between 0 and 1). +Therefore, we seek a method to rescale BERTScore to have an intuitive range. +Let's denote the BERTScore for a pair of candidate and reference sentence as +Let be a lower bound for BERTScores that we typically observe in practice (i.e. ). +We obtain a rescaled BERTScore through a simple linear transformation, +. +With a reliable baseline , we will typically observe to be between 0 and 1. + +We highlight that this rescaling operation does not affect BERTScore's correlation with human judgment, as measured by Pearson's and Kendall's coefficients. So we preserve BERTScore's high correlation as reported in our [study](https://arxiv.org/abs/1904.09675). +We now describe how we compute a reliable baseline. + +For each language, we select a million sentences from some large monolingual corpus. +We randomly group sentences into candidate-reference pairs, resulting in half a million pairs. +For each contextual embedding model, we compute BERTScore on the random pairs and take the average to be the baseline. +We compute the baseline with different layers of representations and separate the baselines for precision, recall, and F1. +So far, we have supported 11 different languages (English, Chinese, French, German...) with all models we support. +The baseline numbers are collected [here](../rescale_baseline). We plan to release the experiment code soon so you can compute baselines with any data of your choice. + +With this recalling, the average BERTScore (computed with RoBERTa-large, layer17) on the WMT18 De-EN translation evaluation dataset drops from 0.9311 to 0.5758. +For a concrete example, we can plot the similarity matrix between two sentences using `bert-score-show`. + +Before scaling: + +![](./static/before.png) + +After scaling: + +![](./static/after.png) + +Clearly, the rescaling produces a more readable output. Occationally, some of the similarity entries will become negative after rescaling but they won't affect BERTScore results because the rescaling is done after BERTScore is computed. + +We package this feature into our library (>=0.3.0). Here's an example on how to use it (note that the language needs to be specified in order to use this feature): +```python +out = bert_score.score( + cands, refs, + rescale_with_baseline=True, lang="en" +) +``` +and for the command-line version: +```bash +bert-score -r example/refs.txt -c example/hyps.txt \ + --lang en --rescale_with_baseline +``` + + + +Hope you enjoy this new feature! + +---Tianyi, Varsha, and Felix diff --git a/mitigating_bias/train/BERTScore/bert_score/journal/static/.png b/mitigating_bias/train/BERTScore/bert_score/journal/static/.png new file mode 100644 index 0000000..d030161 Binary files /dev/null and b/mitigating_bias/train/BERTScore/bert_score/journal/static/.png differ diff --git a/mitigating_bias/train/BERTScore/bert_score/journal/static/after.png b/mitigating_bias/train/BERTScore/bert_score/journal/static/after.png new file mode 100644 index 0000000..e550b23 Binary files /dev/null and b/mitigating_bias/train/BERTScore/bert_score/journal/static/after.png differ diff --git a/mitigating_bias/train/BERTScore/bert_score/journal/static/before.png b/mitigating_bias/train/BERTScore/bert_score/journal/static/before.png new file mode 100644 index 0000000..c40bc01 Binary files /dev/null and b/mitigating_bias/train/BERTScore/bert_score/journal/static/before.png differ diff --git a/mitigating_bias/train/BERTScore/bert_score/reproduce/README.md b/mitigating_bias/train/BERTScore/bert_score/reproduce/README.md new file mode 100644 index 0000000..fd8f069 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/reproduce/README.md @@ -0,0 +1,14 @@ +# Reproducing Experimental Results in Our Paper + +## WMT18 Segment-level Results +```sh +bash download_wmt18.sh +python get_wmt18_seg_results.py -b 16 --model roberta-large +``` + + +## WMT17 System-level Results +```sh +bash download_wmt17.sh +python get_wmt17_sys_results.py -b 16 --model roberta-large +`` \ No newline at end of file diff --git a/mitigating_bias/train/BERTScore/bert_score/reproduce/download_wmt17.sh b/mitigating_bias/train/BERTScore/bert_score/reproduce/download_wmt17.sh new file mode 100644 index 0000000..abbd207 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/reproduce/download_wmt17.sh @@ -0,0 +1,8 @@ +if ! [ -d wmt17 ]; then +wget http://ufallab.ms.mff.cuni.cz/~bojar/wmt17-metrics-task-package.tgz +mkdir wmt17 +tar -xzf wmt17-metrics-task-package.tgz -C wmt17 +cd wmt17/input +# tar -xzf wmt17-metrics-task-no-hybrids.tgz -C no_hybrid +tar -xzf wmt17-metrics-task.tgz +fi \ No newline at end of file diff --git a/mitigating_bias/train/BERTScore/bert_score/reproduce/download_wmt18.sh b/mitigating_bias/train/BERTScore/bert_score/reproduce/download_wmt18.sh new file mode 100644 index 0000000..98c3bcb --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/reproduce/download_wmt18.sh @@ -0,0 +1,15 @@ +mkdir -p wmt18 +cd wmt18 +if ! [ -f wmt18-metrics-task-package ]; then + wget http://ufallab.ms.mff.cuni.cz/\~bojar/wmt18-metrics-task-package.tgz + tar -axvf wmt18-metrics-task-package.tgz + + wget http://ufallab.ms.mff.cuni.cz/~bojar/wmt18/wmt18-metrics-task-nohybrids.tgz + tar -axvf wmt18-metrics-task-nohybrids.tgz + + mv wmt18-metrics-task-nohybrids wmt18-metrics-task-package/input + mkdir -p wmt18 + mv wmt18-metrics-task-package wmt18 + + rm -f *.tgz +fi \ No newline at end of file diff --git a/mitigating_bias/train/BERTScore/bert_score/reproduce/get_wmt17_sys_results.py b/mitigating_bias/train/BERTScore/bert_score/reproduce/get_wmt17_sys_results.py new file mode 100644 index 0000000..3c5183e --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/reproduce/get_wmt17_sys_results.py @@ -0,0 +1,134 @@ +import numpy as np +import pandas as pd +import pickle as pkl +from collections import defaultdict +import os +import torch +import argparse + +from tqdm.auto import tqdm, trange +from collections import defaultdict +from scipy.stats import pearsonr + +import bert_score + +wmt17_sys_to_lang_pairs = ['cs-en', 'de-en', 'fi-en', 'lv-en', 'ru-en', 'tr-en', 'zh-en'] +wmt17_sys_from_lang_pairs = ['en-cs', 'en-de', 'en-lv', 'en-ru', 'en-tr', 'en-zh'] +wmt17_sys_lang_pairs = wmt17_sys_to_lang_pairs + wmt17_sys_from_lang_pairs + +import argparse + +def get_wmt17_sys_data(lang_pair): + first, second = lang_pair.split("-") + + human_scores = pd.read_csv( + "wmt17/manual-evaluation/DA-syslevel.csv", delimiter=" ") + + with open("wmt17/input/wmt17-metrics-task/" + "wmt17-submitted-data/txt/references/newstest2017-{}{}-ref.{}".format(first, second, second)) as f: + refs = f.read().strip().split("\n") + + gold_dict = dict(zip(human_scores[human_scores['LP'] == lang_pair]['SYSTEM'], + human_scores[human_scores['LP'] == lang_pair]['HUMAN'])) + gold_scores = [] + + lang_dir = "wmt17/input/"\ + "wmt17-metrics-task/wmt17-submitted-data/"\ + "txt/system-outputs/newstest2017/{}".format(lang_pair) + systems = [system[13:-6] for system in os.listdir(lang_dir)] + + refs *= len(systems) + cands = [] + + for system in systems: + + with open(os.path.join(lang_dir, "newstest2017.{}.{}".format(system, lang_pair))) as f: + cand_sys = f.read().strip().split("\n") + gold_scores.append(gold_dict[system]) + + cands += cand_sys + return refs, cands, gold_scores, systems + + +def get_wmt17_sys_bert_score(lang_pair, scorer, cache=False, from_en=True, batch_size=64): + filename = '' + if from_en: + if scorer.idf: + filename = "cache_score/from_en/17/{}/wmt17_seg_from_{}_{}_idf.pkl".format(scorer.model_type, *lang_pair.split('-')) + else: + filename = "cache_score/from_en/17/{}/wmt17_seg_from_{}_{}.pkl".format(scorer.model_type, *lang_pair.split('-')) + else: + if scorer.idf: + filename = "cache_score/to_en/17/{}/wmt17_seg_to_{}_{}_idf.pkl".format(scorer.model_type, *lang_pair.split('-')) + else: + filename = "cache_score/to_en/17/{}/wmt17_seg_to_{}_{}.pkl".format(scorer.model_type, *lang_pair.split('-')) + + if os.path.exists(filename): + with open(filename, "rb") as f: + return pkl.load(f) + else: + refs, cands, gold_scores, systems = get_wmt17_sys_data(lang_pair) + if scorer.idf: + scorer.compute_idf(refs) + raw_scores = scorer.score(cands, refs, batch_size=batch_size) + scores = [s.view(len(systems), -1).mean(dim=-1) for s in raw_scores] + + os.makedirs(os.path.dirname(filename), exist_ok=True) + with open(filename, "wb") as f: + pkl.dump((scores, gold_scores), f) + + return scores, gold_scores + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("-d", "--data", default="wmt18", help="path to wmt16 data") + parser.add_argument("-m", "--model", nargs="+", help="models to tune") + parser.add_argument("-l", "--log_file", default="wmt18_log.csv", help="log file path") + parser.add_argument("--idf", action="store_true") + parser.add_argument("-b", "--batch_size", type=int, default=64) + parser.add_argument( + "--lang_pairs", + nargs="+", + default=wmt17_sys_to_lang_pairs, + help="language pairs used for tuning", + ) + args = parser.parse_args() + + torch.set_grad_enabled(False) + + header = 'model_type' + for lang_pair in args.lang_pairs + ['avg']: + header += f',{lang_pair}' + print(header) + if not os.path.exists(args.log_file): + with open(args.log_file, 'w') as f: + print(header, file=f) + + print(args.model) + for model_type in args.model: + scorer = bert_score.scorer.BERTScorer(model_type=model_type, idf=args.idf) + results = defaultdict(dict) + for lang_pair in tqdm(args.lang_pairs): + scores, gold_scores = get_wmt17_sys_bert_score(lang_pair, scorer, batch_size=args.batch_size, cache=True, from_en=False) + for s, name in zip(scores, ["P", "R", "F"]): + results[lang_pair][f"{model_type} {name}"] = np.mean(pearsonr(gold_scores, s)[0]) + + for name in ["P", "R", "F"]: + temp = [] + for lang_pair in args.lang_pairs: + temp.append(results[lang_pair][f"{model_type} {name}"]) + results["avg"][f"{model_type} {name}"] = np.mean(temp) + + msg = f"{model_type} {name} (idf)" if args.idf else f"{model_type} {name}" + for lang_pair in args.lang_pairs + ['avg']: + msg += f",{results[lang_pair][f'{model_type} {name}']}" + print(msg) + with open(args.log_file, "a") as f: + print(msg, file=f) + + del scorer + + +if __name__ == "__main__": + main() diff --git a/mitigating_bias/train/BERTScore/bert_score/reproduce/get_wmt18_seg_results.py b/mitigating_bias/train/BERTScore/bert_score/reproduce/get_wmt18_seg_results.py new file mode 100644 index 0000000..69939fa --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/reproduce/get_wmt18_seg_results.py @@ -0,0 +1,139 @@ +import numpy as np +import pandas as pd +import pickle as pkl +from collections import defaultdict +import os +import torch +import argparse + +from tqdm.auto import tqdm, trange +from collections import defaultdict +from scipy.stats import pearsonr + +import bert_score + +wmt18_sys_to_lang_pairs = ['cs-en', 'de-en', 'et-en', 'fi-en', 'ru-en', 'tr-en', 'zh-en'] +wmt18_sys_from_lang_pairs = ['en-cs', 'en-de', 'en-et', 'en-fi', 'en-ru', 'en-tr', 'en-zh'] +wmt18_sys_lang_pairs = wmt18_sys_to_lang_pairs + wmt18_sys_from_lang_pairs + +import argparse + + +def get_wmt18_seg_data(lang_pair): + src, tgt = lang_pair.split('-') + + RRdata = pd.read_csv( + "wmt18/wmt18-metrics-task-package/manual-evaluation/RR-seglevel.csv", sep=' ') + # RRdata_lang = RRdata[RRdata['LP'] == lang_pair] # there is a typo in this data. One column name is missing in the header + RRdata_lang = RRdata[RRdata.index == lang_pair] + + systems = set(RRdata_lang['BETTER']) + systems.update(list(set(RRdata_lang['WORSE']))) + systems = list(systems) + sentences = {} + for system in systems: + with open("wmt18/wmt18-metrics-task-package/input/wmt18-metrics-task-nohybrids/system-outputs/newstest2018/{}/newstest2018.{}.{}".format(lang_pair, system, lang_pair)) as f: + sentences[system] = f.read().split("\n") + + with open("wmt18/wmt18-metrics-task-package/input/wmt18-metrics-task-nohybrids/" + "references/{}".format('newstest2018-{}{}-ref.{}'.format(src, tgt, tgt))) as f: + references = f.read().split("\n") + + ref = [] + cand_better = [] + cand_worse = [] + for index, row in RRdata_lang.iterrows(): + cand_better += [sentences[row['BETTER']][row['SID']-1]] + cand_worse += [sentences[row['WORSE']][row['SID']-1]] + ref += [references[row['SID']-1]] + + return ref, cand_better, cand_worse + + +def kendell_score(scores_better, scores_worse): + total = len(scores_better) + correct = torch.sum(scores_better > scores_worse).item() + incorrect = total - correct + return (correct - incorrect)/total + + +def get_wmt18_seg_bert_score(lang_pair, scorer, cache=False, from_en=True, batch_size=64): + filename = '' + if from_en: + if scorer.idf: + filename = "cache_score/from_en/18/{}/wmt18_seg_from_{}_{}_idf.pkl".format(scorer.model_type, *lang_pair.split('-')) + else: + filename = "cache_score/from_en/18/{}/wmt18_seg_from_{}_{}.pkl".format(scorer.model_type, *lang_pair.split('-')) + else: + if scorer.idf: + filename = "cache_score/to_en/18/{}/wmt18_seg_to_{}_{}_idf.pkl".format(scorer.model_type, *lang_pair.split('-')) + else: + filename = "cache_score/to_en/18/{}/wmt18_seg_to_{}_{}.pkl".format(scorer.model_type, *lang_pair.split('-')) + if os.path.exists(filename): + with open(filename, "rb") as f: + return pkl.load(f) + else: + refs, cand_better, cand_worse = get_wmt18_seg_data(lang_pair) + if scorer.idf: + scorer.compute_idf(refs) + scores_better = list(scorer.score(cand_better, refs, batch_size=batch_size)) + scores_worse = list(scorer.score(cand_worse, refs, batch_size=batch_size)) + if cache: + os.makedirs(os.path.dirname(filename), exist_ok=True) + with open(filename, "wb") as f: + pkl.dump((scores_better, scores_worse), f) + return scores_better, scores_worse + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("-d", "--data", default="wmt18", help="path to wmt16 data") + parser.add_argument("-m", "--model", nargs="+", help="models to tune") + parser.add_argument("-l", "--log_file", default="wmt18_log.csv", help="log file path") + parser.add_argument("--idf", action="store_true") + parser.add_argument("-b", "--batch_size", type=int, default=64) + parser.add_argument( + "--lang_pairs", + nargs="+", + default=wmt18_sys_to_lang_pairs, + help="language pairs used for tuning", + ) + args = parser.parse_args() + + torch.set_grad_enabled(False) + + header = 'model_type' + for lang_pair in args.lang_pairs + ['avg']: + header += f',{lang_pair}' + print(header) + if not os.path.exists(args.log_file): + with open(args.log_file, 'w') as f: + print(header, file=f) + + print(args.model) + for model_type in args.model: + scorer = bert_score.scorer.BERTScorer(model_type=model_type, idf=args.idf) + results = defaultdict(dict) + for lang_pair in tqdm(args.lang_pairs): + scores_better, scores_worse = get_wmt18_seg_bert_score(lang_pair, scorer, batch_size=args.batch_size, cache=True, from_en=False) + for sb, sw, name in zip(scores_better, scores_worse, ["P", "R", "F"]): + results[lang_pair][f"{model_type} {name}"] = kendell_score(sb, sw) + + for name in ["P", "R", "F"]: + temp = [] + for lang_pair in args.lang_pairs: + temp.append(results[lang_pair][f"{model_type} {name}"]) + results["avg"][f"{model_type} {name}"] = np.mean(temp) + + msg = f"{model_type} {name} (idf)" if args.idf else f"{model_type} {name}" + for lang_pair in args.lang_pairs + ['avg']: + msg += f",{results[lang_pair][f'{model_type} {name}']}" + print(msg) + with open(args.log_file, "a") as f: + print(msg, file=f) + + del scorer + + +if __name__ == "__main__": + main() diff --git a/mitigating_bias/train/BERTScore/bert_score/requirements.txt b/mitigating_bias/train/BERTScore/bert_score/requirements.txt new file mode 100644 index 0000000..ff18fee --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/requirements.txt @@ -0,0 +1,10 @@ +# PyTorch +torch>=1.0.0 +# progress bars in model download and training scripts +tqdm>=4.31.1 +# BERT +transformers>=3.0.0 +matplotlib +pandas>=1.0.1 +numpy +packaging>=20.9 diff --git a/mitigating_bias/train/BERTScore/bert_score/setup.py b/mitigating_bias/train/BERTScore/bert_score/setup.py new file mode 100644 index 0000000..2832f77 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/setup.py @@ -0,0 +1,43 @@ +from io import open + +from setuptools import find_packages, setup + +setup( + name="bert_score", + version='0.3.11', + author="Tianyi Zhang*, Varsha Kishore*, Felix Wu*, Kilian Q. Weinberger, and Yoav Artzi", + author_email="tzhang@asapp.com", + description="PyTorch implementation of BERT score", + long_description=open("README.md", "r", encoding='utf-8').read(), + long_description_content_type="text/markdown", + keywords='BERT NLP deep learning google metric', + license='MIT', + url="https://github.com/Tiiiger/bert_score", + packages=find_packages(exclude=["*.tests", "*.tests.*", + "tests.*", "tests"]), + install_requires=['torch>=1.0.0', + 'pandas>=1.0.1', + 'transformers>=3.0.0' + 'numpy', + 'requests', + 'tqdm>=4.31.1', + 'matplotlib', + 'packaging>=20.9', + ], + entry_points={ + 'console_scripts': [ + "bert-score=bert_score_cli.score:main", + "bert-score-show=bert_score_cli.visualize:main", + ] + }, + include_package_data=True, + python_requires='>=3.6', + tests_require=['pytest'], + classifiers=[ + 'Intended Audience :: Science/Research', + 'License :: OSI Approved :: MIT License', + 'Programming Language :: Python :: 3', + 'Topic :: Scientific/Engineering :: Artificial Intelligence', + ], + +) diff --git a/mitigating_bias/train/BERTScore/bert_score/tests/__init__.py b/mitigating_bias/train/BERTScore/bert_score/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mitigating_bias/train/BERTScore/bert_score/tests/custom_assertions.py b/mitigating_bias/train/BERTScore/bert_score/tests/custom_assertions.py new file mode 100644 index 0000000..303296d --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/tests/custom_assertions.py @@ -0,0 +1,14 @@ +import numpy as np +import torch + + +class CustomAssertions: + def assertAreTensors(self, *args): + if not all([torch.is_tensor(arg) for arg in args]): + raise AssertionError("All values should be of type torch.Tensor") + + def assertTensorsAlmostEqual(self, expected, actual, decimal=5): + """ + Test tensors are almost equal (EPS = 1e-5 by default) + """ + np.testing.assert_almost_equal(expected, actual, decimal=decimal) diff --git a/mitigating_bias/train/BERTScore/bert_score/tests/test_score_function.py b/mitigating_bias/train/BERTScore/bert_score/tests/test_score_function.py new file mode 100644 index 0000000..f5df272 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/tests/test_score_function.py @@ -0,0 +1,160 @@ +import unittest +import bert_score +from transformers import __version__ as ht_version + +from tests.custom_assertions import CustomAssertions + + +cands = [ + "28-year-old chef found dead in San Francisco mall", + "A 28-year-old chef who recently moved to San Francisco was found dead in the staircase of a local shopping center.", + 'The victim\'s brother said he cannot imagine anyone who would want to harm him,"Finally, it went uphill again at him."', +] +refs = [ + "28-Year-Old Chef Found Dead at San Francisco Mall", + "A 28-year-old chef who had recently moved to San Francisco was found dead in the stairwell of a local mall this week.", + "But the victim's brother says he can't think of anyone who would want to hurt him, saying, \"Things were finally going well for him.\"", +] + + +class TestScore(unittest.TestCase, CustomAssertions): + def test_score(self): + (P, R, F), hash_code = bert_score.score( + cands, refs, model_type="roberta-large", num_layers=17, idf=False, batch_size=3, return_hash=True, + ) + self.assertAreTensors(P, R, F) + self.assertTensorsAlmostEqual(P, [0.9843302369117737, 0.9832239747047424, 0.9120386242866516]) + self.assertTensorsAlmostEqual(R, [0.9823839068412781, 0.9732863903045654, 0.920428991317749]) + self.assertTensorsAlmostEqual(F, [0.9833561182022095, 0.9782299995422363, 0.916214644908905]) + self.assertEqual( + hash_code, + f"roberta-large_L17_no-idf_version={bert_score.__version__}(hug_trans={ht_version})", + ) + + def test_idf_score(self): + (P, R, F), hash_code = bert_score.score( + cands, refs, model_type="roberta-large", num_layers=17, idf=True, batch_size=3, return_hash=True, + ) + self.assertAreTensors(P, R, F) + self.assertTensorsAlmostEqual(P, [0.9837872385978699, 0.9754738807678223, 0.8947395086288452]) + self.assertTensorsAlmostEqual(R, [0.9827190637588501, 0.9697767496109009, 0.9172918796539307]) + self.assertTensorsAlmostEqual(F, [0.9832529425621033, 0.972616970539093, 0.9058753848075867]) + + self.assertEqual( + hash_code, + f"roberta-large_L17_idf_version={bert_score.__version__}(hug_trans={ht_version})", + ) + + def test_score_rescale(self): + (P, R, F), hash_code = bert_score.score( + cands, + refs, + model_type="roberta-large", + num_layers=17, + idf=False, + batch_size=3, + return_hash=True, + lang="en", + rescale_with_baseline=True, + ) + self.assertAreTensors(P, R, F) + self.assertTensorsAlmostEqual(P, [0.907000780105591, 0.900435566902161, 0.477955609560013]) + self.assertTensorsAlmostEqual(R, [0.895456790924072, 0.841467440128326, 0.527785062789917]) + self.assertTensorsAlmostEqual(F, [0.901383399963379, 0.871010780334473, 0.503565192222595]) + + self.assertEqual( + hash_code, + f"roberta-large_L17_no-idf_version={bert_score.__version__}(hug_trans={ht_version})-rescaled", + ) + + def test_idf_score_rescale(self): + (P, R, F), hash_code = bert_score.score( + cands, + refs, + model_type="roberta-large", + num_layers=17, + idf=True, + batch_size=3, + return_hash=True, + lang="en", + rescale_with_baseline=True, + ) + self.assertAreTensors(P, R, F) + self.assertTensorsAlmostEqual(P, [0.903778135776520, 0.854439020156860, 0.375287383794785]) + self.assertTensorsAlmostEqual(R, [0.897446095943451, 0.820639789104462, 0.509167850017548]) + self.assertTensorsAlmostEqual(F, [0.900772094726562, 0.837753534317017, 0.442304641008377]) + + self.assertEqual( + hash_code, + f"roberta-large_L17_idf_version={bert_score.__version__}(hug_trans={ht_version})-rescaled", + ) + + def test_idf_score_rescale_fast_tokenizer(self): + (P, R, F), hash_code = bert_score.score( + cands, + refs, + model_type="roberta-large", + num_layers=17, + idf=True, + batch_size=3, + return_hash=True, + lang="en", + rescale_with_baseline=True, + use_fast_tokenizer=True, + ) + self.assertAreTensors(P, R, F) + self.assertTensorsAlmostEqual(P, [0.9060347080230713, 0.8529528975486755, 0.4002779722213745]) + self.assertTensorsAlmostEqual(R, [0.907024621963501, 0.8212453722953796, 0.514383852481842]) + self.assertTensorsAlmostEqual(F, [0.9066815376281738, 0.8373198509216309, 0.45761245489120483]) + + self.assertEqual( + hash_code, + f"roberta-large_L17_idf_version={bert_score.__version__}(hug_trans={ht_version})-rescaled_fast-tokenizer", + ) + + def test_multi_refs(self): + cands = ["I like lemons."] + refs = [["I am proud of you.", "I love lemons.", "Go go go."]] + P_mul, R_mul, F_mul = bert_score.score( + cands, refs, batch_size=3, return_hash=False, lang="en", rescale_with_baseline=True, + ) + P_best, R_best, F_best = bert_score.score( + cands, [refs[0][1]], batch_size=3, return_hash=False, lang="en", rescale_with_baseline=True, + ) + self.assertTensorsAlmostEqual(P_mul, P_best) + self.assertTensorsAlmostEqual(R_mul, R_best) + self.assertTensorsAlmostEqual(F_mul, F_best) + + def test_multi_refs_working(self): + cands = ["I like lemons.", "Hi", "Hey", "Hello", "Go", ""] + refs = [ + ["I am proud of you.", "I love lemons.", "Go go go."], + ["I am proud of you.", "Go go go."], + ["Hi", ""], + ["I am proud of you.", "I love lemons.", "Go go go.", "hello"], + ["I am proud of you.", "Go go go.", "Go", "Go to school"], + ["test"], + ] + P_mul, R_mul, F_mul = bert_score.score( + cands, refs, batch_size=3, return_hash=False, lang="en", rescale_with_baseline=True + ) + self.assertAreTensors(P_mul, R_mul, F_mul) + + @unittest.skip( + "temporary disabled along with commented model 'scibert-scivocab-uncased' in utils.model2layers") + def test_score_en_sci(self): + (P, R, F), hash_code = bert_score.score(cands, refs, lang="en-sci", return_hash=True) + + self.assertAreTensors(P, R, F) + self.assertTensorsAlmostEqual(P, [0.9785506725, 0.9363335371, 0.8104354143]) + self.assertTensorsAlmostEqual(R, [0.9785507321, 0.9109522700, 0.7933146954]) + self.assertTensorsAlmostEqual(F, [0.9785507321, 0.9234685898, 0.8017836809]) + + self.assertEqual( + hash_code, + f"scibert-scivocab-uncased_L8_no-idf_version={bert_score.__version__}(hug_trans={ht_version})", + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/mitigating_bias/train/BERTScore/bert_score/tests/test_scorer.py b/mitigating_bias/train/BERTScore/bert_score/tests/test_scorer.py new file mode 100644 index 0000000..ccc8b81 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/tests/test_scorer.py @@ -0,0 +1,96 @@ +import unittest +from transformers import __version__ as ht_version +import bert_score + +from tests.custom_assertions import CustomAssertions + +cands = [ + "28-year-old chef found dead in San Francisco mall", + "A 28-year-old chef who recently moved to San Francisco was found dead in the staircase of a local shopping center.", + 'The victim\'s brother said he cannot imagine anyone who would want to harm him,"Finally, it went uphill again at him."', +] +refs = [ + "28-Year-Old Chef Found Dead at San Francisco Mall", + "A 28-year-old chef who had recently moved to San Francisco was found dead in the stairwell of a local mall this week.", + "But the victim's brother says he can't think of anyone who would want to hurt him, saying, \"Things were finally going well for him.\"", +] + + +class TestScore(unittest.TestCase, CustomAssertions): + def test_scorer(self): + scorer = bert_score.BERTScorer(lang="en", batch_size=3) + + (P, R, F), hash_code = scorer.score(cands, refs, return_hash=True) + self.assertAreTensors(P, R, F) + self.assertTensorsAlmostEqual(P, [0.9843302369117737, 0.9832239747047424, 0.9120386242866516]) + self.assertTensorsAlmostEqual(R, [0.9823839068412781, 0.9732863903045654, 0.920428991317749]) + self.assertTensorsAlmostEqual(F, [0.9833561182022095, 0.9782299995422363, 0.916214644908905]) + self.assertEqual( + hash_code, f"roberta-large_L17_no-idf_version={bert_score.__version__}(hug_trans={ht_version})", + ) + + def test_idf_scorer(self): + scorer = bert_score.BERTScorer(lang="en", idf=True, idf_sents=refs, batch_size=3) + + (P, R, F), hash_code = scorer.score(cands, refs, return_hash=True) + self.assertAreTensors(P, R, F) + self.assertTensorsAlmostEqual(P, [0.9837872385978699, 0.9754738807678223, 0.8947395086288452]) + self.assertTensorsAlmostEqual(R, [0.9827190637588501, 0.9697767496109009, 0.9172918796539307]) + self.assertTensorsAlmostEqual(F, [0.9832529425621033, 0.972616970539093, 0.9058753848075867]) + self.assertEqual( + hash_code, f"roberta-large_L17_idf_version={bert_score.__version__}(hug_trans={ht_version})", + ) + + def test_scorer_rescale(self): + scorer = bert_score.BERTScorer(lang="en", rescale_with_baseline=True, batch_size=3) + + (P, R, F), hash_code = scorer.score(cands, refs, return_hash=True) + self.assertAreTensors(P, R, F) + self.assertTensorsAlmostEqual(P, [0.907000780105591, 0.900435566902161, 0.477955609560013]) + self.assertTensorsAlmostEqual(R, [0.895456790924072, 0.841467440128326, 0.527785062789917]) + self.assertTensorsAlmostEqual(F, [0.901383399963379, 0.871010780334473, 0.503565192222595]) + self.assertEqual( + hash_code, f"roberta-large_L17_no-idf_version={bert_score.__version__}(hug_trans={ht_version})-rescaled", + ) + + def test_idf_scorer_rescale(self): + scorer = bert_score.BERTScorer(lang="en", rescale_with_baseline=True, idf=True, idf_sents=refs, batch_size=3) + + (P, R, F), hash_code = scorer.score(cands, refs, return_hash=True) + self.assertAreTensors(P, R, F) + self.assertTensorsAlmostEqual(P, [0.903778135776520, 0.854439020156860, 0.375287383794785]) + self.assertTensorsAlmostEqual(R, [0.897446095943451, 0.820639789104462, 0.509167850017548]) + self.assertTensorsAlmostEqual(F, [0.900772094726562, 0.837753534317017, 0.442304641008377]) + self.assertEqual( + hash_code, f"roberta-large_L17_idf_version={bert_score.__version__}(hug_trans={ht_version})-rescaled", + ) + + def test_multi_refs(self): + scorer = bert_score.BERTScorer(lang="en", batch_size=3, rescale_with_baseline=True) + + cands = ["I like lemons."] + refs = [["I am proud of you.", "I love lemons.", "Go go go."]] + P_mul, R_mul, F_mul = scorer.score(cands, refs,) + P_best, R_best, F_best = scorer.score(cands, [refs[0][1]],) + self.assertTensorsAlmostEqual(P_mul, P_best) + self.assertTensorsAlmostEqual(R_mul, R_best) + self.assertTensorsAlmostEqual(F_mul, F_best) + + def test_multi_refs_working(self): + scorer = bert_score.BERTScorer(lang="en", batch_size=3, rescale_with_baseline=True) + + cands = ["I like lemons.", "Hi", "Hey", "Hello", "Go", ""] + refs = [ + ["I am proud of you.", "I love lemons.", "Go go go."], + ["I am proud of you.", "Go go go."], + ["Hi", ""], + ["I am proud of you.", "I love lemons.", "Go go go.", "hello"], + ["I am proud of you.", "Go go go.", "Go", "Go to school"], + ["test"], + ] + P_mul, R_mul, F_mul = scorer.score(cands, refs,) + self.assertAreTensors(P_mul, R_mul, F_mul) + + +if __name__ == "__main__": + unittest.main() diff --git a/mitigating_bias/train/BERTScore/bert_score/tune_layers/README.md b/mitigating_bias/train/BERTScore/bert_score/tune_layers/README.md new file mode 100644 index 0000000..686739c --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/tune_layers/README.md @@ -0,0 +1,22 @@ +# Tuning best layer of a pre-trained English model on WMT16 dataset + +### Downloading the dataset +This downloads the WMT16 dataset and extracts it into a new folder called `wmt16`. If the folder `wmt16` exists, it will skip the process. +```sh +bash download_data.sh +``` + +### Tuning the models +Here is an example of tuning three models in a row: +```sh +python tune_layers.py -m bert-base-uncased roberta-base albert-base-v2 +``` +The results would be appended to `best_layers_log.txt`. +The last three lines of `best_layers_log.txt` would be +``` +'bert-base-uncased': 9, # 0.692518813886652 +'roberta-base': 10, # 0.7062886932674598 +'albert-base-v2': 9, # 0.6682362357086912 +``` +which shows the model name, the best number of layers, and the pearson correlation with human judgement. +These can be copied and pasted into `model2layers` in `bert_score/utils.py`. \ No newline at end of file diff --git a/mitigating_bias/train/BERTScore/bert_score/tune_layers/download_data.sh b/mitigating_bias/train/BERTScore/bert_score/tune_layers/download_data.sh new file mode 100644 index 0000000..3138f6b --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/tune_layers/download_data.sh @@ -0,0 +1,12 @@ +if ! [ -d wmt16 ]; then + mkdir wmt16 + gz_file=wmt16-metrics-results.tar.gz + if ! [ -f $gz_file ]; then + wget https://www.scss.tcd.ie/~ygraham/wmt16-metrics-results.tar.gz + fi + tar -xzf $gz_file -C wmt16 + rm -f $gz_file + echo "Finished downloading and extracting the dataset" +else + echo "Folder 'wmt16' exists already." +fi diff --git a/mitigating_bias/train/BERTScore/bert_score/tune_layers/tune.sh b/mitigating_bias/train/BERTScore/bert_score/tune_layers/tune.sh new file mode 100644 index 0000000..e88b082 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/tune_layers/tune.sh @@ -0,0 +1,2 @@ +bash download_data.sh +python tune_layers.py -m bert-base-uncased roberta-base albert-base-v2 \ No newline at end of file diff --git a/mitigating_bias/train/BERTScore/bert_score/tune_layers/tune_layers.py b/mitigating_bias/train/BERTScore/bert_score/tune_layers/tune_layers.py new file mode 100644 index 0000000..168d155 --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/tune_layers/tune_layers.py @@ -0,0 +1,116 @@ +import os +import re +import argparse +import torch +import numpy as np + +from tqdm.auto import tqdm, trange +from collections import defaultdict +from scipy.stats import pearsonr + +import bert_score + + +def get_wmt16(lang_pair, data_folder="wmt16"): + with open( + os.path.join( + data_folder, + f"wmt16-metrics-results/seg-level-results/DAseg-newstest2016/DAseg-newstest2016.human.{lang_pair}", + ) + ) as f: + gold_scores = list(map(float, f.read().strip().split("\n"))) + + with open( + os.path.join( + data_folder, + f"wmt16-metrics-results/seg-level-results/DAseg-newstest2016/DAseg-newstest2016.reference.{lang_pair}", + ) + ) as f: + all_refs = f.read().strip().split("\n") + + with open( + os.path.join( + data_folder, + f"wmt16-metrics-results/seg-level-results/DAseg-newstest2016/DAseg-newstest2016.mt-system.{lang_pair}", + ) + ) as f: + all_hyps = f.read().strip().split("\n") + + return gold_scores, all_refs, all_hyps + + +def get_wmt16_seg_to_bert_score(lang_pair, scorer, data_folder="wmt16", batch_size=64): + # os.makedirs(f"cache_score/{network}", exist_ok=True) + # path = "cache_score/{}/wmt16_seg_to_{}_{}.pkl".format(network, *lang_pair.split("-")) + + gold_scores, refs, cands = get_wmt16(lang_pair, data_folder=data_folder) + if scorer.idf: + scorer.compute_idf(refs) + scores = scorer.score(cands, refs, verbose=False, batch_size=batch_size) + scores = list(scores) + max_length = scorer._tokenizer.max_len_single_sentence + + return scores, gold_scores, max_length + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("-d", "--data", default="wmt16", help="path to wmt16 data") + parser.add_argument("-m", "--model", nargs="+", help="models to tune") + parser.add_argument("-l", "--log_file", default="best_layers_log.txt", help="log file path") + parser.add_argument("--idf", action="store_true") + parser.add_argument("-b", "--batch_size", type=int, default=64) + parser.add_argument( + "--lang_pairs", + nargs="+", + default=["cs-en", "de-en", "fi-en", "ro-en", "ru-en", "tr-en"], + help="language pairs used for tuning", + ) + args = parser.parse_args() + + if args.log_file.endswith(".txt"): + csv_file = args.log_file.replace(".txt", ".csv") + else: + csv_file = args.log_file + ".csv" + + torch.set_grad_enabled(False) + + networks = args.model + for network in networks: + model_type = network + scorer = bert_score.scorer.BERTScorer(model_type=model_type, num_layers=100, idf=False, all_layers=True) + results = defaultdict(dict) + for lang_pair in tqdm(args.lang_pairs): + scores, gold_scores, max_length = get_wmt16_seg_to_bert_score(lang_pair, scorer, batch_size=args.batch_size) + for i, score in enumerate(scores[2]): + results[lang_pair + " " + str(i)]["%s %s" % (network, "F")] = pearsonr(score, gold_scores)[0] + + best_layer, best_corr = 0, 0.0 + for num_layer in range(100): + temp = [] + if f"{args.lang_pairs[0]} {num_layer}" not in results: + break + for lp in args.lang_pairs: + temp.append(results[f"{lp} {num_layer}"][f"{network} F"]) + corr = np.mean(temp) + results["avg" + " " + str(num_layer)]["%s %s" % (network, "F")] = corr + print(network, num_layer, corr) + if corr > best_corr: + best_layer, best_corr = num_layer, corr + + if args.idf: + msg = f"'{network}' (idf): {best_layer}, # {best_corr}" + else: + msg = f"'{network}': {best_layer}, # {best_corr}" + print(msg) + with open(args.log_file, "a") as f: + print(msg, file=f) + csv_msg = f"{network},{best_layer},{best_corr},,{max_length}" + with open(csv_file, "a") as f: + print(csv_msg, file=f) + + del scorer + + +if __name__ == "__main__": + main() diff --git a/mitigating_bias/train/BERTScore/bert_score/upload_pypi.sh b/mitigating_bias/train/BERTScore/bert_score/upload_pypi.sh new file mode 100644 index 0000000..4a5afdd --- /dev/null +++ b/mitigating_bias/train/BERTScore/bert_score/upload_pypi.sh @@ -0,0 +1,4 @@ +#!/bin/bash +rm -rf dist +python setup.py sdist bdist_wheel +python -m twine upload dist/* \ No newline at end of file diff --git a/mitigating_bias/train/BERTScore/bertscore_utils.py b/mitigating_bias/train/BERTScore/bertscore_utils.py new file mode 100644 index 0000000..df28d7e --- /dev/null +++ b/mitigating_bias/train/BERTScore/bertscore_utils.py @@ -0,0 +1,630 @@ +import sys +import os +import torch +from math import log +from itertools import chain +from collections import defaultdict, Counter +from multiprocessing import Pool +from functools import partial +from tqdm.auto import tqdm +from torch.nn.utils.rnn import pad_sequence +from distutils.version import LooseVersion + +from transformers import BertConfig, XLNetConfig, XLMConfig, RobertaConfig +from transformers import AutoModel, GPT2Tokenizer, AutoTokenizer +from transformers.adapters import BertAdapterModel, AutoAdapterModel + +from transformers import __version__ as trans_version + +__all__ = [] + +SCIBERT_URL_DICT = { + "scibert-scivocab-uncased": "https://s3-us-west-2.amazonaws.com/ai2-s2-research/scibert/pytorch_models/scibert_scivocab_uncased.tar", + # recommend by the SciBERT authors + "scibert-scivocab-cased": "https://s3-us-west-2.amazonaws.com/ai2-s2-research/scibert/pytorch_models/scibert_scivocab_cased.tar", + "scibert-basevocab-uncased": "https://s3-us-west-2.amazonaws.com/ai2-s2-research/scibert/pytorch_models/scibert_basevocab_uncased.tar", + "scibert-basevocab-cased": "https://s3-us-west-2.amazonaws.com/ai2-s2-research/scibert/pytorch_models/scibert_basevocab_cased.tar", +} + +lang2model = defaultdict(lambda: "bert-base-multilingual-cased") +lang2model.update( + { + "en": "roberta-large", + "zh": "bert-base-chinese", + "tr": "dbmdz/bert-base-turkish-cased", + "en-sci": "allenai/scibert_scivocab_uncased", + } +) + +model2layers = { + "bert-base-uncased": 9, # 0.6925188074454226 + "bert-large-uncased": 18, # 0.7210358126642836 + "bert-base-cased-finetuned-mrpc": 9, # 0.6721947475618048 + "bert-base-multilingual-cased": 9, # 0.6680687802637132 + "bert-base-chinese": 8, + "roberta-base": 10, # 0.706288719158983 + "roberta-large": 17, # 0.7385974720781534 + "roberta-large-mnli": 19, # 0.7535618640417984 + "roberta-base-openai-detector": 7, # 0.7048158349432633 + "roberta-large-openai-detector": 15, # 0.7462770207355116 + "xlnet-base-cased": 5, # 0.6630103662114238 + "xlnet-large-cased": 7, # 0.6598800720297179 + "xlm-mlm-en-2048": 6, # 0.651262570131464 + "xlm-mlm-100-1280": 10, # 0.6475166424401905 + # "scibert-scivocab-uncased": 8, # 0.6590354319927313 + # "scibert-scivocab-cased": 9, # 0.6536375053937445 + # "scibert-basevocab-uncased": 9, # 0.6748944832703548 + # "scibert-basevocab-cased": 9, # 0.6524624150542374 + 'allenai/scibert_scivocab_uncased': 8, # 0.6590354393124127 + 'allenai/scibert_scivocab_cased': 9, # 0.6536374902465466 + 'nfliu/scibert_basevocab_uncased': 9, # 0.6748945076082333 + "distilroberta-base": 5, # 0.6797558139322964 + "distilbert-base-uncased": 5, # 0.6756659152782033 + "distilbert-base-uncased-distilled-squad": 4, # 0.6718318036382493 + "distilbert-base-multilingual-cased": 5, # 0.6178131050889238 + "albert-base-v1": 10, # 0.654237567249745 + "albert-large-v1": 17, # 0.6755890754323239 + "albert-xlarge-v1": 16, # 0.7031844211905911 + "albert-xxlarge-v1": 8, # 0.7508642218461096 + "albert-base-v2": 9, # 0.6682455591837927 + "albert-large-v2": 14, # 0.7008537594374035 + "albert-xlarge-v2": 13, # 0.7317228357869254 + "albert-xxlarge-v2": 8, # 0.7505160257184014 + "xlm-roberta-base": 9, # 0.6506799445871697 + "xlm-roberta-large": 17, # 0.6941551437476826 + "google/electra-small-generator": 9, # 0.6659421842117754 + "google/electra-small-discriminator": 11, # 0.6534639151385759 + "google/electra-base-generator": 10, # 0.6730033453857188 + "google/electra-base-discriminator": 9, # 0.7032089590812965 + "google/electra-large-generator": 18, # 0.6813370013104459 + "google/electra-large-discriminator": 14, # 0.6896675824733477 + "google/bert_uncased_L-2_H-128_A-2": 1, # 0.5887998733228855 + "google/bert_uncased_L-2_H-256_A-4": 1, # 0.6114863547661203 + "google/bert_uncased_L-2_H-512_A-8": 1, # 0.6177345529192847 + "google/bert_uncased_L-2_H-768_A-12": 2, # 0.6191261237956839 + "google/bert_uncased_L-4_H-128_A-2": 3, # 0.6076202863798991 + "google/bert_uncased_L-4_H-256_A-4": 3, # 0.6205239036810148 + "google/bert_uncased_L-4_H-512_A-8": 3, # 0.6375351621856903 + "google/bert_uncased_L-4_H-768_A-12": 3, # 0.6561849979644787 + "google/bert_uncased_L-6_H-128_A-2": 5, # 0.6200458425360283 + "google/bert_uncased_L-6_H-256_A-4": 5, # 0.6277501629539081 + "google/bert_uncased_L-6_H-512_A-8": 5, # 0.641952305130849 + "google/bert_uncased_L-6_H-768_A-12": 5, # 0.6762186226247106 + "google/bert_uncased_L-8_H-128_A-2": 7, # 0.6186876506711779 + "google/bert_uncased_L-8_H-256_A-4": 7, # 0.6447993208267708 + "google/bert_uncased_L-8_H-512_A-8": 6, # 0.6489729408169956 + "google/bert_uncased_L-8_H-768_A-12": 7, # 0.6705203359541737 + "google/bert_uncased_L-10_H-128_A-2": 8, # 0.6126762064125278 + "google/bert_uncased_L-10_H-256_A-4": 8, # 0.6376350032576573 + "google/bert_uncased_L-10_H-512_A-8": 9, # 0.6579006292799915 + "google/bert_uncased_L-10_H-768_A-12": 8, # 0.6861146692220176 + "google/bert_uncased_L-12_H-128_A-2": 10, # 0.6184105693383591 + "google/bert_uncased_L-12_H-256_A-4": 11, # 0.6374004994430261 + "google/bert_uncased_L-12_H-512_A-8": 10, # 0.65880012149526 + "google/bert_uncased_L-12_H-768_A-12": 9, # 0.675911357700092 + "amazon/bort": 0, # 0.41927911053036643 + "facebook/bart-base": 6, # 0.7122259132414092 + "facebook/bart-large": 10, # 0.7448671872459683 + "facebook/bart-large-cnn": 10, # 0.7393148105835096 + "facebook/bart-large-mnli": 11, # 0.7531665445691358 + "facebook/bart-large-xsum": 9, # 0.7496408866539556 + "t5-small": 6, # 0.6813843919496912 + "t5-base": 11, # 0.7096044814981418 + "t5-large": 23, # 0.7244153820191929 + "vinai/bertweet-base": 9, # 0.6529471006118857 + "microsoft/deberta-base": 9, # 0.7088459455930344 + "microsoft/deberta-base-mnli": 9, # 0.7395257063907247 + "microsoft/deberta-large": 16, # 0.7511806792052013 + "microsoft/deberta-large-mnli": 18, # 0.7736263649679905 + "microsoft/deberta-xlarge": 18, # 0.7568670944373346 + "microsoft/deberta-xlarge-mnli": 40, # 0.7780600929333213 + "YituTech/conv-bert-base": 10, # 0.7058253551080789 + "YituTech/conv-bert-small": 10, # 0.6544473011107349 + "YituTech/conv-bert-medium-small": 9, # 0.6590097075123257 + "microsoft/mpnet-base": 8, # 0.724976539498804 + "squeezebert/squeezebert-uncased": 9, # 0.6543868703018726 + "squeezebert/squeezebert-mnli": 9, # 0.6654799051284791 + "squeezebert/squeezebert-mnli-headless": 9, # 0.6654799051284791 + "tuner007/pegasus_paraphrase": 15, # 0.7188349436772694 + "google/pegasus-large": 8, # 0.63960462272448 + "google/pegasus-xsum": 11, # 0.6836878575233349 + "sshleifer/tiny-mbart": 2, # 0.028246072231946733 + "facebook/mbart-large-cc25": 12, # 0.6582922975802958 + "facebook/mbart-large-50": 12, # 0.6464972230103133 + "facebook/mbart-large-en-ro": 12, # 0.6791285137459857 + "facebook/mbart-large-50-many-to-many-mmt": 12, # 0.6904136529270892 + "facebook/mbart-large-50-one-to-many-mmt": 12, # 0.6847906439540236 + "allenai/led-base-16384": 6, # 0.7122259170564179 + "facebook/blenderbot_small-90M": 7, # 0.6489176335400088 + "facebook/blenderbot-400M-distill": 2, # 0.5874774070540008 + "microsoft/prophetnet-large-uncased": 4, # 0.586496184234925 + "microsoft/prophetnet-large-uncased-cnndm": 7, # 0.6478379437729287 + "SpanBERT/spanbert-base-cased": 8, # 0.6824006863686848 + "SpanBERT/spanbert-large-cased": 17, # 0.705352690855603 + "microsoft/xprophetnet-large-wiki100-cased": 7, # 0.5852499775879524 + "ProsusAI/finbert": 10, # 0.6923213940752796 + "Vamsi/T5_Paraphrase_Paws": 12, # 0.6941611753807352 + "ramsrigouthamg/t5_paraphraser": 11, # 0.7200917597031539 + "microsoft/deberta-v2-xlarge": 10, # 0.7393675784473045 + "microsoft/deberta-v2-xlarge-mnli": 17, # 0.7620620803716714 + "microsoft/deberta-v2-xxlarge": 21, # 0.7520547670281869 + "microsoft/deberta-v2-xxlarge-mnli": 22, # 0.7742603457742682 + "allenai/longformer-base-4096": 7, # 0.7089559593129316 + "allenai/longformer-large-4096": 14, # 0.732408493548181 + "allenai/longformer-large-4096-finetuned-triviaqa": 14, # 0.7365882744744722 + "zhiheng-huang/bert-base-uncased-embedding-relative-key": 4, # 0.5995636595368777 + "zhiheng-huang/bert-base-uncased-embedding-relative-key-query": 7, # 0.6303599452145718 + "zhiheng-huang/bert-large-uncased-whole-word-masking-embedding-relative-key-query": 19, # 0.6896878492850327 + 'google/mt5-small': 8, # 0.6401166527273479 + 'google/mt5-base': 11, # 0.5663956536597241 + 'google/mt5-large': 19, # 0.6430931371732798 + 'google/mt5-xl': 24, # 0.6707200963021145 + 'google/bigbird-roberta-base': 10, # 0.6695606423502717 + 'google/bigbird-roberta-large': 14, # 0.6755874042374509 + 'google/bigbird-base-trivia-itc': 8, # 0.6930725491629892 + 'princeton-nlp/unsup-simcse-bert-base-uncased': 10, # 0.6703066531921142 + 'princeton-nlp/unsup-simcse-bert-large-uncased': 18, # 0.6958302800755326 + 'princeton-nlp/unsup-simcse-roberta-base': 8, # 0.6436615893535319 + 'princeton-nlp/unsup-simcse-roberta-large': 13, # 0.6812864385585965 + 'princeton-nlp/sup-simcse-bert-base-uncased': 10, # 0.7068074935240984 + 'princeton-nlp/sup-simcse-bert-large-uncased': 18, # 0.7111049471332378 + 'princeton-nlp/sup-simcse-roberta-base': 10, # 0.7253123806661946 + 'princeton-nlp/sup-simcse-roberta-large': 16, # 0.7497820277237173 + 'dbmdz/bert-base-turkish-cased': 10, # WMT18 seg en-tr 0.5522827687776142 + 'dbmdz/distilbert-base-turkish-cased': 4, # WMT18 seg en-tr 0.4742268041237113 + 'google/byt5-small': 1, # 0.5100025975052146 + 'google/byt5-base': 17, # 0.5810347173565313 + 'google/byt5-large': 30, # 0.6151895697554877 + 'microsoft/deberta-v3-xsmall': 10, # 0.6941803815412021 + 'microsoft/deberta-v3-small': 4, # 0.6651551203179679 + 'microsoft/deberta-v3-base': 9, # 0.7261586651018335 + 'microsoft/mdeberta-v3-base': 10, # 0.6778713684091584 + 'microsoft/deberta-v3-large': 12, # 0.6927693082293821 + 'khalidalt/DeBERTa-v3-large-mnli': 18, # 0.7428756686018376 +} + + +def sent_encode(tokenizer, sent): + "Encoding as sentence based on the tokenizer" + sent = sent.strip() + if sent == "": + return tokenizer.build_inputs_with_special_tokens([]) + elif isinstance(tokenizer, GPT2Tokenizer): + # for RoBERTa and GPT-2 + if LooseVersion(trans_version) >= LooseVersion("4.0.0"): + return tokenizer.encode( + sent, + add_special_tokens=True, + add_prefix_space=True, + max_length=tokenizer.model_max_length, + truncation=True, + ) + elif LooseVersion(trans_version) >= LooseVersion("3.0.0"): + return tokenizer.encode( + sent, add_special_tokens=True, add_prefix_space=True, max_length=tokenizer.max_len, truncation=True, + ) + elif LooseVersion(trans_version) >= LooseVersion("2.0.0"): + return tokenizer.encode(sent, add_special_tokens=True, add_prefix_space=True, max_length=tokenizer.max_len) + else: + raise NotImplementedError(f"transformers version {trans_version} is not supported") + else: + if LooseVersion(trans_version) >= LooseVersion("4.0.0"): + return tokenizer.encode( + sent, add_special_tokens=True, max_length=tokenizer.model_max_length, truncation=True, + ) + elif LooseVersion(trans_version) >= LooseVersion("3.0.0"): + return tokenizer.encode(sent, add_special_tokens=True, max_length=tokenizer.max_len, truncation=True) + elif LooseVersion(trans_version) >= LooseVersion("2.0.0"): + return tokenizer.encode(sent, add_special_tokens=True, max_length=tokenizer.max_len) + else: + raise NotImplementedError(f"transformers version {trans_version} is not supported") + + +def get_model(model_type, num_layers, all_layers=None): + if model_type.startswith("scibert"): + model = AutoModel.from_pretrained(cache_scibert(model_type)) + elif "t5" in model_type: + from transformers import T5EncoderModel + + model = T5EncoderModel.from_pretrained(model_type) + else: + # model = AutoModel.from_pretrained(model_type) + model = AutoAdapterModel.from_pretrained(model_type) + # model.eval() + + if hasattr(model, "decoder") and hasattr(model, "encoder"): + model = model.encoder + + # drop unused layers + if not all_layers: + if hasattr(model, "n_layers"): # xlm + assert ( + 0 <= num_layers <= model.n_layers + ), f"Invalid num_layers: num_layers should be between 0 and {model.n_layers} for {model_type}" + model.n_layers = num_layers + elif hasattr(model, "layer"): # xlnet + assert ( + 0 <= num_layers <= len(model.layer) + ), f"Invalid num_layers: num_layers should be between 0 and {len(model.layer)} for {model_type}" + model.layer = torch.nn.ModuleList([layer for layer in model.layer[:num_layers]]) + elif hasattr(model, "encoder"): # albert + if hasattr(model.encoder, "albert_layer_groups"): + assert ( + 0 <= num_layers <= model.encoder.config.num_hidden_layers + ), f"Invalid num_layers: num_layers should be between 0 and {model.encoder.config.num_hidden_layers} for {model_type}" + model.encoder.config.num_hidden_layers = num_layers + elif hasattr(model.encoder, "block"): # t5 + assert ( + 0 <= num_layers <= len(model.encoder.block) + ), f"Invalid num_layers: num_layers should be between 0 and {len(model.encoder.block)} for {model_type}" + model.encoder.block = torch.nn.ModuleList([layer for layer in model.encoder.block[:num_layers]]) + else: # bert, roberta + assert ( + 0 <= num_layers <= len(model.encoder.layer) + ), f"Invalid num_layers: num_layers should be between 0 and {len(model.encoder.layer)} for {model_type}" + model.encoder.layer = torch.nn.ModuleList([layer for layer in model.encoder.layer[:num_layers]]) + elif hasattr(model, "transformer"): # bert, roberta + assert ( + 0 <= num_layers <= len(model.transformer.layer) + ), f"Invalid num_layers: num_layers should be between 0 and {len(model.transformer.layer)} for {model_type}" + model.transformer.layer = torch.nn.ModuleList([layer for layer in model.transformer.layer[:num_layers]]) + elif hasattr(model, "layers"): # bart + assert ( + 0 <= num_layers <= len(model.layers) + ), f"Invalid num_layers: num_layers should be between 0 and {len(model.layers)} for {model_type}" + model.layers = torch.nn.ModuleList([layer for layer in model.layers[:num_layers]]) + else: + raise ValueError("Not supported") + else: + if hasattr(model, "output_hidden_states"): + model.output_hidden_states = True + elif hasattr(model, "encoder"): + model.encoder.output_hidden_states = True + elif hasattr(model, "transformer"): + model.transformer.output_hidden_states = True + # else: + # raise ValueError(f"Not supported model architecture: {model_type}") + + return model + + +def get_tokenizer(model_type, use_fast=False): + if model_type.startswith("scibert"): + model_type = cache_scibert(model_type) + + if LooseVersion(trans_version) >= LooseVersion("4.0.0"): + tokenizer = AutoTokenizer.from_pretrained(model_type, use_fast=use_fast) + else: + assert not use_fast, "Fast tokenizer is not available for version < 4.0.0" + tokenizer = AutoTokenizer.from_pretrained(model_type) + + return tokenizer + + +def padding(arr, pad_token, dtype=torch.long): + lens = torch.LongTensor([len(a) for a in arr]) + max_len = lens.max().item() + padded = torch.ones(len(arr), max_len, dtype=dtype) * pad_token + mask = torch.zeros(len(arr), max_len, dtype=torch.long) + for i, a in enumerate(arr): + padded[i, : lens[i]] = torch.tensor(a, dtype=dtype) + mask[i, : lens[i]] = 1 + return padded, lens, mask + + +def bert_encode(model, x, attention_mask, all_layers=False): + # model.eval() + + out = model(x, attention_mask=attention_mask, output_hidden_states=all_layers) + if all_layers: + emb = torch.stack(out[-1], dim=2) + else: + emb = out[0] + return emb + + +def process(a, tokenizer=None): + if tokenizer is not None: + a = sent_encode(tokenizer, a) + return set(a) + + +def get_idf_dict(arr, tokenizer, nthreads=4): + """ + Returns mapping from word piece index to its inverse document frequency. + + + Args: + - :param: `arr` (list of str) : sentences to process. + - :param: `tokenizer` : a BERT tokenizer corresponds to `model`. + - :param: `nthreads` (int) : number of CPU threads to use + """ + idf_count = Counter() + num_docs = len(arr) + + process_partial = partial(process, tokenizer=tokenizer) + + with Pool(nthreads) as p: + idf_count.update(chain.from_iterable(p.map(process_partial, arr))) + + idf_dict = defaultdict(lambda: log((num_docs + 1) / (1))) + idf_dict.update({idx: log((num_docs + 1) / (c + 1)) for (idx, c) in idf_count.items()}) + return idf_dict + + +def collate_idf(arr, tokenizer, idf_dict, device="cuda:0"): + """ + Helper function that pads a list of sentences to hvae the same length and + loads idf score for words in the sentences. + + Args: + - :param: `arr` (list of str): sentences to process. + - :param: `tokenize` : a function that takes a string and return list + of tokens. + - :param: `numericalize` : a function that takes a list of tokens and + return list of token indexes. + - :param: `idf_dict` (dict): mapping a word piece index to its + inverse document frequency + - :param: `pad` (str): the padding token. + - :param: `device` (str): device to use, e.g. 'cpu' or 'cuda' + """ + arr = [sent_encode(tokenizer, a) for a in arr] + + idf_weights = [[idf_dict[i] for i in a] for a in arr] + + pad_token = tokenizer.pad_token_id + + padded, lens, mask = padding(arr, pad_token, dtype=torch.long) + padded_idf, _, _ = padding(idf_weights, 0, dtype=torch.float) + + padded = padded.to(device=device) + mask = mask.to(device=device) + lens = lens.to(device=device) + return padded, padded_idf, lens, mask + + +def get_bert_embedding(all_sens, model, tokenizer, idf_dict, batch_size=-1, device="cuda:0", all_layers=False): + """ + Compute BERT embedding in batches. + + Args: + - :param: `all_sens` (list of str) : sentences to encode. + - :param: `model` : a BERT model from `pytorch_pretrained_bert`. + - :param: `tokenizer` : a BERT tokenizer corresponds to `model`. + - :param: `idf_dict` (dict) : mapping a word piece index to its + inverse document frequency + - :param: `device` (str): device to use, e.g. 'cpu' or 'cuda' + """ + + padded_sens, padded_idf, lens, mask = collate_idf(all_sens, tokenizer, idf_dict, device=device) + + if batch_size == -1: + batch_size = len(all_sens) + + embeddings = [] + + for i in range(0, len(all_sens), batch_size): + batch_embedding = bert_encode( + model, padded_sens[i: i + batch_size], attention_mask=mask[i: i + batch_size], all_layers=all_layers, + ) + embeddings.append(batch_embedding) + del batch_embedding + + total_embedding = torch.cat(embeddings, dim=0) + + return total_embedding, mask, padded_idf + + +def greedy_cos_idf(ref_embedding, ref_masks, ref_idf, hyp_embedding, hyp_masks, hyp_idf, all_layers=False): + """ + Compute greedy matching based on cosine similarity. + + Args: + - :param: `ref_embedding` (torch.Tensor): + embeddings of reference sentences, BxKxd, + B: batch size, K: longest length, d: bert dimenison + - :param: `ref_lens` (list of int): list of reference sentence length. + - :param: `ref_masks` (torch.LongTensor): BxKxK, BERT attention mask for + reference sentences. + - :param: `ref_idf` (torch.Tensor): BxK, idf score of each word + piece in the reference setence + - :param: `hyp_embedding` (torch.Tensor): + embeddings of candidate sentences, BxKxd, + B: batch size, K: longest length, d: bert dimenison + - :param: `hyp_lens` (list of int): list of candidate sentence length. + - :param: `hyp_masks` (torch.LongTensor): BxKxK, BERT attention mask for + candidate sentences. + - :param: `hyp_idf` (torch.Tensor): BxK, idf score of each word + piece in the candidate setence + """ + ref_embedding = ref_embedding.div(torch.norm(ref_embedding, dim=-1).unsqueeze(-1)) + hyp_embedding = hyp_embedding.div(torch.norm(hyp_embedding, dim=-1).unsqueeze(-1)) + + if all_layers: + B, _, L, D = hyp_embedding.size() + hyp_embedding = hyp_embedding.transpose(1, 2).transpose(0, 1).contiguous().view(L * B, hyp_embedding.size(1), D) + ref_embedding = ref_embedding.transpose(1, 2).transpose(0, 1).contiguous().view(L * B, ref_embedding.size(1), D) + batch_size = ref_embedding.size(0) + sim = torch.bmm(hyp_embedding, ref_embedding.transpose(1, 2)) + masks = torch.bmm(hyp_masks.unsqueeze(2).float(), ref_masks.unsqueeze(1).float()) + if all_layers: + masks = masks.unsqueeze(0).expand(L, -1, -1, -1).contiguous().view_as(sim) + else: + masks = masks.expand(batch_size, -1, -1).contiguous().view_as(sim) + + masks = masks.float().to(sim.device) + sim = sim * masks + + word_precision = sim.max(dim=2)[0] + word_recall = sim.max(dim=1)[0] + + hyp_idf = hyp_idf.div(hyp_idf.sum(dim=1, keepdim=True)) + ref_idf = ref_idf.div(ref_idf.sum(dim=1, keepdim=True)) + precision_scale = hyp_idf.to(word_precision.device) + recall_scale = ref_idf.to(word_recall.device) + if all_layers: + precision_scale = precision_scale.unsqueeze(0).expand(L, B, -1).contiguous().view_as(word_precision) + recall_scale = recall_scale.unsqueeze(0).expand(L, B, -1).contiguous().view_as(word_recall) + P = (word_precision * precision_scale).sum(dim=1) + R = (word_recall * recall_scale).sum(dim=1) + F = 2 * P * R / (P + R) + + hyp_zero_mask = hyp_masks.sum(dim=1).eq(2) + ref_zero_mask = ref_masks.sum(dim=1).eq(2) + + if all_layers: + P = P.view(L, B) + R = R.view(L, B) + F = F.view(L, B) + + if torch.any(hyp_zero_mask): + print( + "Warning: Empty candidate sentence detected; setting raw BERTscores to 0.", file=sys.stderr, + ) + P = P.masked_fill(hyp_zero_mask, 0.0) + R = R.masked_fill(hyp_zero_mask, 0.0) + + if torch.any(ref_zero_mask): + print("Warning: Empty reference sentence detected; setting raw BERTScores to 0.", file=sys.stderr) + P = P.masked_fill(ref_zero_mask, 0.0) + R = R.masked_fill(ref_zero_mask, 0.0) + + F = F.masked_fill(torch.isnan(F), 0.0) + + return P, R, F + + +def bert_cos_score_idf( + model, refs, hyps, tokenizer, idf_dict, verbose=False, batch_size=64, device="cuda:0", all_layers=False, +): + """ + Compute BERTScore. + + Args: + - :param: `model` : a BERT model in `pytorch_pretrained_bert` + - :param: `refs` (list of str): reference sentences + - :param: `hyps` (list of str): candidate sentences + - :param: `tokenzier` : a BERT tokenizer corresponds to `model` + - :param: `idf_dict` : a dictionary mapping a word piece index to its + inverse document frequency + - :param: `verbose` (bool): turn on intermediate status update + - :param: `batch_size` (int): bert score processing batch size + - :param: `device` (str): device to use, e.g. 'cpu' or 'cuda' + """ + preds = [] + + def dedup_and_sort(l): + return sorted(list(set(l)), key=lambda x: len(x.split(" ")), reverse=True) + + sentences = dedup_and_sort(refs + hyps) + embs = [] + iter_range = range(0, len(sentences), batch_size) + if verbose: + print("computing bert embedding.") + iter_range = tqdm(iter_range) + stats_dict = dict() + for batch_start in iter_range: + sen_batch = sentences[batch_start: batch_start + batch_size] + embs, masks, padded_idf = get_bert_embedding( + sen_batch, model, tokenizer, idf_dict, device=device, all_layers=all_layers + ) + embs = embs + masks = masks + padded_idf = padded_idf + for i, sen in enumerate(sen_batch): + sequence_len = masks[i].sum().item() + emb = embs[i, :sequence_len] + idf = padded_idf[i, :sequence_len] + stats_dict[sen] = (emb, idf) + + def pad_batch_stats(sen_batch, stats_dict, device): + stats = [stats_dict[s] for s in sen_batch] + emb, idf = zip(*stats) + emb = [e.to(device) for e in emb] + idf = [i.to(device) for i in idf] + lens = [e.size(0) for e in emb] + emb_pad = pad_sequence(emb, batch_first=True, padding_value=2.0) + idf_pad = pad_sequence(idf, batch_first=True) + + def length_to_mask(lens): + lens = torch.tensor(lens, dtype=torch.long) + max_len = max(lens) + base = torch.arange(max_len, dtype=torch.long).expand(len(lens), max_len) + return base < lens.unsqueeze(1) + + pad_mask = length_to_mask(lens).to(device) + return emb_pad, pad_mask, idf_pad + + device = next(model.parameters()).device + iter_range = range(0, len(refs), batch_size) + if verbose: + print("computing greedy matching.") + iter_range = tqdm(iter_range) + + for batch_start in iter_range: + batch_refs = refs[batch_start: batch_start + batch_size] + batch_hyps = hyps[batch_start: batch_start + batch_size] + ref_stats = pad_batch_stats(batch_refs, stats_dict, device) + hyp_stats = pad_batch_stats(batch_hyps, stats_dict, device) + + P, R, F1 = greedy_cos_idf(*ref_stats, *hyp_stats, all_layers) + preds.append(torch.stack((P, R, F1), dim=-1)) + preds = torch.cat(preds, dim=1 if all_layers else 0) + return preds + + +# def get_hash(model, num_layers, idf, rescale_with_baseline, use_custom_baseline, use_fast_tokenizer): +# msg = "{}_L{}{}_version={}(hug_trans={})".format( +# model, num_layers, "_idf" if idf else "_no-idf", __version__, trans_version +# ) +# if rescale_with_baseline: +# if use_custom_baseline: +# msg += "-custom-rescaled" +# else: +# msg += "-rescaled" +# if use_fast_tokenizer: +# msg += "_fast-tokenizer" +# return msg + + +def cache_scibert(model_type, cache_folder="~/.cache/torch/transformers"): + if not model_type.startswith("scibert"): + return model_type + + underscore_model_type = model_type.replace("-", "_") + cache_folder = os.path.abspath(os.path.expanduser(cache_folder)) + filename = os.path.join(cache_folder, underscore_model_type) + + # download SciBERT models + if not os.path.exists(filename): + cmd = f"mkdir -p {cache_folder}; cd {cache_folder};" + cmd += f"wget {SCIBERT_URL_DICT[model_type]}; tar -xvf {underscore_model_type}.tar;" + cmd += ( + f"rm -f {underscore_model_type}.tar ; cd {underscore_model_type}; tar -zxvf weights.tar.gz; mv weights/* .;" + ) + cmd += f"rm -f weights.tar.gz; rmdir weights; mv bert_config.json config.json;" + print(cmd) + print(f"downloading {model_type} model") + os.system(cmd) + + # fix the missing files in scibert + json_file = os.path.join(filename, "special_tokens_map.json") + if not os.path.exists(json_file): + with open(json_file, "w") as f: + print( + '{"unk_token": "[UNK]", "sep_token": "[SEP]", "pad_token": "[PAD]", "cls_token": "[CLS]", "mask_token": "[MASK]"}', + file=f, + ) + + json_file = os.path.join(filename, "added_tokens.json") + if not os.path.exists(json_file): + with open(json_file, "w") as f: + print("{}", file=f) + + if "uncased" in model_type: + json_file = os.path.join(filename, "tokenizer_config.json") + if not os.path.exists(json_file): + with open(json_file, "w") as f: + print('{"do_lower_case": true, "max_len": 512, "init_inputs": []}', file=f) + + return filename diff --git a/mitigating_bias/train/BERTScore/dataloader.py b/mitigating_bias/train/BERTScore/dataloader.py new file mode 100644 index 0000000..f037aa5 --- /dev/null +++ b/mitigating_bias/train/BERTScore/dataloader.py @@ -0,0 +1,36 @@ +from fastNLP import DataSet, Instance +from fastNLP.io import Loader + + +class DataLoader(Loader): + def __init__(self, max_seq_len=150): + super().__init__() + self.max_seq_len=max_seq_len + + def _load(self, path: str) -> DataSet: + print('Loading {}...'.format(path)) + total_sampls, debias_samples, distillation_samples = 0, 0, 0 + ds = DataSet() + with open(path, 'r') as fin: + lines = fin.readlines() + for l in lines: + items = l.split('\t') + refs = ' '.join(items[0].strip().split(' ')[:self.max_seq_len]) + hyps = ' '.join(items[1].strip().split(' ')[:self.max_seq_len]) + sample = { + 'refs': refs, + 'hyps': hyps, + 'labels': float(items[2]), + 'type': items[3], + } + ds.append(Instance(**sample)) + # statistics + total_sampls += 1 + if sample['type'] == 'debias': + debias_samples += 1 + else: + distillation_samples += 1 + + ds.set_input("refs", "hyps", "labels") + ds.set_target("labels") + return ds diff --git a/mitigating_bias/train/BERTScore/requirements.txt b/mitigating_bias/train/BERTScore/requirements.txt new file mode 100644 index 0000000..6ae43e0 --- /dev/null +++ b/mitigating_bias/train/BERTScore/requirements.txt @@ -0,0 +1,12 @@ +adapter_transformers==3.1.0 +fastNLP==1.0.0 +fitlog==0.9.13 +matplotlib==3.4.3 +numpy==1.20.3 +pandas==1.3.4 +sacrebleu==2.2.1 +scipy==1.7.1 +setuptools==58.0.4 +torch==1.12.1+cu116 +tqdm==4.62.3 +transformers==4.23.1 diff --git a/mitigating_bias/train/BERTScore/train_BERTScore.py b/mitigating_bias/train/BERTScore/train_BERTScore.py new file mode 100644 index 0000000..0332ea5 --- /dev/null +++ b/mitigating_bias/train/BERTScore/train_BERTScore.py @@ -0,0 +1,150 @@ +import argparse +import random +from collections import defaultdict + +import fitlog +import numpy as np +import pandas as pd +import torch +from bertscore_utils import (bert_cos_score_idf, cache_scibert, + get_bert_embedding, get_idf_dict, get_model, + get_tokenizer, lang2model, model2layers, + sent_encode) +from dataloader import DataLoader +from fastNLP import (FitlogCallback, GradientClipCallback, LossInForward, + RandomSampler, Trainer, WarmupCallback, cache_results) +from transformers import AdamW + + +def set_seed(args): + random.seed(args.seed) + np.random.seed(args.seed) + torch.manual_seed(args.seed) + if torch.cuda.is_available(): + torch.cuda.manual_seed_all(args.seed) + + +def parse_args(): + parser = argparse.ArgumentParser() + + parser.add_argument( + "--model_type", default='bert-large-uncased', type=str, required=False) + parser.add_argument( + "--adapter_name", default='debiased-bertscore', type=str, required=False) + parser.add_argument("--lr", default=5e-4, type=float, required=False) + parser.add_argument("--warmup", default=0.0, type=float, required=False) + parser.add_argument("--batch_size", default=16, type=int, required=False) + parser.add_argument("--n_epochs", default=4, type=int, required=False) + parser.add_argument("--seed", default=42, type=int, required=False) + parser.add_argument("--device", default='cuda:0', type=str, required=False) + parser.add_argument("--logging_steps", default=100, + type=int, required=False) + parser.add_argument( + "--data_path", default='train.tsv', type=str, required=False) + return parser.parse_args() + + +class BERTScore(torch.nn.Module): + def __init__(self, args): + super(BERTScore, self).__init__() + num_layers = model2layers[args.model_type] + self.tokenizer = get_tokenizer(args.model_type) + self.model = get_model(args.model_type, num_layers, all_layers=True) + self.model.add_adapter(args.adapter_name) + # add adapter and freeze other parameters + self.model.train_adapter(args.adapter_name) + self.model.to(args.device) + + self.idf_dict = defaultdict(lambda: 1.0) + # set idf for [SEP] and [CLS] to 0 + self.idf_dict[self.tokenizer.sep_token_id] = 0 + self.idf_dict[self.tokenizer.cls_token_id] = 0 + + self.verbose = args.verbose + self.device = args.device + self.batch_size = args.batch_size + self.all_layers = args.all_layers + + def save_adapter(self, adapter_name): + self.model.save_adapter('./adapter', adapter_name) + + def forward(self, refs, hyps, labels): + refs = refs.tolist() + hyps = hyps.tolist() + all_preds = bert_cos_score_idf( + self.model, + refs, + hyps, + self.tokenizer, + self.idf_dict, + verbose=self.verbose, + device=self.device, + batch_size=self.batch_size, + all_layers=self.all_layers, + ) + + p, r, f = all_preds[..., 0], all_preds[..., 1], all_preds[..., 2] + + loss_func = torch.nn.MSELoss() + loss = loss_func(f, labels) + + return { + 'p': p, + 'r': r, + 'f': f, + 'loss': loss, + } + + +if __name__ == '__main__': + args = parse_args() + set_seed(args) + + # static hyperparams + args.all_layers = False + args.lang = 'en' + args.verbose = False + args.adapter_name = args.model_type + args.adapter_name + + log_dir = './logs' + fitlog.set_log_dir(log_dir) + # fitlog.commit(__file__) + fitlog.add_hyper(args) + fitlog.add_hyper_in_file(__file__) + + model = BERTScore(args) + + @cache_results('cached_data.bin', _refresh=False) + def get_data(path): + paths = { + 'train': path, + } + data_bundle = DataLoader().load(paths) + return data_bundle + + # load dataset + data_bundle = get_data(patt=args.data_path) + train_data = data_bundle.get_dataset('train') + print('# samples: {}'.format(len(train_data))) + print('Example:') + print(train_data[0]) + + parameters = [] + for name, param in model.named_parameters(): + if param.requires_grad: + parameters.append(param) + optimizer = AdamW(parameters, lr=args.lr) + + callbacks = [] + callbacks.append(GradientClipCallback(clip_value=1, clip_type='norm')) + callbacks.append(FitlogCallback(log_loss_every=args.logging_steps)) + if args.warmup > 0: + callbacks.append(WarmupCallback(warmup=args.warmup, schedule='linear')) + trainer = Trainer(train_data=train_data, model=model, loss=LossInForward(), optimizer=optimizer, + batch_size=args.batch_size, sampler=RandomSampler(), drop_last=False, update_every=1, + num_workers=4, n_epochs=args.n_epochs, print_every=50, dev_data=None, metrics=None, + validate_every=args.logging_steps, save_path=None, use_tqdm=False, device=args.device, + callbacks=callbacks, dev_batch_size=None, metric_key=None) + trainer.train(load_best_model=False) + model.save_adapter(args.adapter_name) + fitlog.finish() diff --git a/mitigating_bias/train/BERTScore/train_bert_large.sh b/mitigating_bias/train/BERTScore/train_bert_large.sh new file mode 100644 index 0000000..e240dc7 --- /dev/null +++ b/mitigating_bias/train/BERTScore/train_bert_large.sh @@ -0,0 +1,13 @@ +INPUT_PATH=./BERTScore/BERT-large/train.tsv + +python train_BERTScore.py + --model_type bert-large-uncased \ + --adapter_name debiased-bertscore \ + --lr 5e-4 \ + --warmup 0.0 \ + --batch_size 16 \ + --n_epochs 4 \ + --seed 42 \ + --device cuda \ + --logging_steps 100 \ + --data_path ${INPUT_PATH} \ No newline at end of file