We bought this book and watched a lot of this guy's youtube videos before we bought our most recent puppy.
www.amazon.co.uk/Zak-Georges-Dog-Training-Revolution/dp/1607748916?tag=mumsnetforum-21
The guy is very good, focused on positive methods, and we've found his techniques quite effective. We've had some trouble with our puppy getting on the couch (in fact she's sat there right now, but by invitation so she's fine lol) and she's much too big to lift off. We worked on 'off' with her for ages. We'd get her to jump on the couch, and if she did it, fuss and treat. Then tell her off, and point to where we want her to go, and if she did it, fuss and treat. Keep doing it over and over, lots of training sessions, to get it to sink in. She's got it now, pretty much, but we keep practicing it with her to be sure, like everything we teach her basically. We have little pots of treats all over the house to do impromptu training sessions whenever the opportunity comes up.
We also had trouble with snapping too, which we generally respond to with a firm no, and either change the situation, or use distraction to change her behaviour. So if she's on my lap and she snaps at me, a firm no, and she goes on the floor, or out of the room, or distract with a toy. If she snaps during play, we take the toy away, have her sit and wait to get the toy back until she's calm. If she takes the toy back gently, lots of fuss and carry on playing with her.
Consistency is key, everyone needs to use the same commands, and enforces the same rules. And the dog needs to understand what the commands mean. With plenty of repetition and practice, she will learn. As with a lot of dog issues, it's about training the owners as much as the dog, so setting in stone that the dog is not picked up at all, have them all practicing the off command with her and treating her when she does it. She will get it, if they all stick with it, and she shoud have no reason to snap at anyone that way.